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);

    }
}

 

posted on 2019-10-26 19:28  忆夏KhaZix  阅读(197)  评论(0编辑  收藏  举报