• JavaSE_08_Collections常用功能


    1.1 常用功能

    • java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:

    • public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。

    • public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。

    • public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。

    • public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序。

    public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
            //添加多个元素
            Collections.addAll(list,"a","c","b","d");
            System.out.println(list);
    
            //打乱集合中元素的顺序
            Collections.shuffle(list);
            System.out.println(list);
    
            //sort 将集合中的元素按照默认的顺序排序  只能使用list集合或者实现了list接口
            Collections.sort(list);
            System.out.println(list);
        }

    2.2 Comparator比较器

    public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。

    sort()如何进行排序呢?

    在JAVA中提供了两种比较实现的方式,一种是比较死板的采用java.lang.Comparable接口去实现,一种是灵活的当我需要做排序的时候在去选择的java.util.Comparator接口完成。

    public int compare(String o1, String o2):比较其两个参数的顺序。

    两个对象比较的结果有三种:大于,等于,小于。

    如果要按照升序排序, 则o1 小于o2,返回(负数),相等返回0,01大于02返回(正数)

    如果要按照降序排序 则o1 小于o2,返回(正数),相等返回0,01大于02返回(负数)

    public class CollectionsDemo3 {
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<String>();
            list.add("cba");
            list.add("aba");
            list.add("sba");
            list.add("nba");
            //排序方法  按照第一个单词的降序
            Collections.sort(list, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    return o2.charAt(0) - o1.charAt(0);
                }
            });
            System.out.println(list);
        }
    }

    2.3 练习

    创建一个人类,存储到ArrayList集合中完成指定排序操作。

    第一种:将人类实现Comparable<Person>接口,并重写compareTo()方法

    @Override
        public int compareTo(Person o) {
            //自定义比较规则 按年龄shengx比较
            return this.getAge()-o.getAge();
        }

    第二种:使用内部类方式 new Comparator()接口,重写compare方法

    Lambda表达式简写:Collections.sort(people, (o1,o2) -> o1.getAge()-o2.getAge() );

    public class Demo02Sort {
        public static void main(String[] args) {
    
            ArrayList<Person> people = new ArrayList<>();
            Person p1 = new Person("hdh", 20);
            Person p2 = new Person("xj", 19);
            Collections.addAll(people,p1,p2);
            Collections.sort(people, new Comparator<Person>() {
                @Override
                public int compare(Person o1, Person o2) {
    
                    return o1.getAge()-o2.getAge();
                }
            });
            System.out.println(people);
    
        }
    }
  • 相关阅读:
    CF1290E Cartesian Tree
    【LeetCode】11. 盛最多水的容器
    【LeetCode】10. 正则表达式匹配
    【LeetCode】9. 回文数
    【LeetCode】8. 字符串转换整数 (atoi)
    【LeetCode】7. 整数反转
    【LeetCode】6. Z 字形变换
    【LeetCode】5. 最长回文子串
    【LeetCode】4. 寻找两个正序数组的中位数[待补充]
    【LeetCode】3. 无重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/asndxj/p/11745215.html
Copyright © 2020-2023  润新知