Collections集合工具类常用的方法

1 java.utils.Collections //是集合工具类,用来对集合进行操作。部分方法如下:
2 public static <T> boolean addAll(Collection<T> c, T... elements);
3     //往集合中添加一些元素[添加多个元素]。
4 public static void shuffle(List<?> list);
5     //打乱集合顺序。
6 public static <T> void sort(List<T> list);
7     //将集合中元素按照默认规则排序。
8 public static <T> void sort(List<T> list,Comparator<? super T> );
9     //将集合中元素按照指定规则排

addAll()方法

 1 package _5Collections集合工具类;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 
 6 /**
 7  * @Author Admin
 8  * @Classname DemoCollections
 9  * @Package _5Collections集合工具类
10  * @GreatDate 2020/04/19 17:29:01
11  * @Description TODO 演示Collections集合工具类
12  */
13 public class DemoCollectionsAddAll {
14     public static void main(String[] args) {
15         ArrayList<String> list = new ArrayList<>();
16         //往集合中添加元素
17         list.add("0");
18         list.add("b");
19         list.add("c");
20         list.add("x");
21         list.add("x");
22         list.add("u");
23         list.add("K");
24     
25         System.out.println(list);//[0, b, c, x, x, u, K]
26         /*
27             public static <T> boolean addAll(Collection<T> c, T... elements);
28                     往集合中添加一些元素[添加多个元素]。
29          */
30         Collections.addAll(list,"a","b","l");
31         System.out.println(list);
32         
33     }
34 }

sort(List<T> list)方法,实现Comparable接口

1 public static <T> void sort(List<T> list);
2               //将集合中元素按照默认规则排序。
3 注意4   sort(List<T>List)使用前提
5 /*    被排序的集合里边存储的元素,必须实现comparable接口,
6    因此覆写comparable接口中的方法 compareTo(),可以重新定义排序的规则。
7 */
8 comparable 接口中的排序规则:
9   自己(this)-参数:升序,反之,就是降序.

实例:

 1 package _5Collections集合工具类;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 
 6 /**
 7  * @Author Admin
 8  * @Classname DemoCollectionsAddSort
 9  * @Package _5Collections集合工具类
10  * @GreatDate 2020/04/19 19:32:10
11  * @Description TODO 演示Collectionsl类的Sort()方法
12  */
13 /*
14     public static <T> void sort(List<T> list);
15                     将集合中元素按照默认规则排序。
16    注意:
17         sort(List<T>List)使用前提
18         被排序的集合里边存储的元素,必须实现comparable接口,
19         因此覆写comparable接口中的方法compareTo(),可以重新定义排序的规则。
20     comparable接口中的排序规则:
21         自己(this)-参数:升序,反之,就是降序.
22     
23  */
24 public class DemoCollectionsComparableSort {
25     public static void main(String[] args) {
26         ArrayList<Integer> list = new ArrayList<>();
27         list.add(1);
28         list.add(6);
29         list.add(8);
30         list.add(5);
31         System.out.println(list);//[1, 6, 8, 5]
32         System.out.println("---------------------------");
33         Collections.sort(list);//默认是升序
34         System.out.println(list);
35         System.out.println("---------------------------");
36         ArrayList<String> list01 = new ArrayList<>();
37         list01.add("b");
38         list01.add("a");
39         list01.add("c");
40         list01.add("A");
41         
42         System.out.println(list01);//[b, a, c, A]
43         System.out.println("---------------------------");
44         Collections.sort(list01);//默认是升序
45         System.out.println(list01);
46         System.out.println("---------------------------");
47         
48         ArrayList<Person> list02 = new ArrayList<>();
49         list02.add(new Person("张三", 29));
50         list02.add(new Person("李四", 23));
51         list02.add(new Person("王五", 19));
52         list02.add(new Person("赵六", 28));
53         System.out.println(list02);
54         //排序前:[Person{name='张三', age=29}, Person{name='李四', age=23}, Person{name='王五', age=19}, Person{name='赵六', age=28}]
55         System.out.println("---------------------------");
56         Collections.sort(list02);
57         System.out.println(list02);//升序
58         //覆写comparable接口中的方法compareTo()后,
59         //[Person{name='王五', age=19}, Person{name='李四', age=23}, Person{name='赵六', age=28}, Person{name='张三', age=29}]
60     }
61     
62 }

实体类:

 1 package _5Collections集合工具类;
 2 
 3 /**
 4  * @Author Admin
 5  * @Classname Person
 6  * @Package _2Set集合._3HashCode哈希值
 7  * @GreatDate 2020/04/19 09:13:54
 8  * @Description TODO 演示实体类
 9  */
10 
11 public class Person implements Comparable<Person>{
12    private String name;
13    private int age;
14     
15     public Person() {
16     }
17     
18     public Person(String name, int age) {
19         this.name = name;
20         this.age = age;
21     }
22     
23     @Override
24     public String toString() {
25         return "Person{" +
26             "name='" + name + '\'' +
27             ", age=" + age +
28             '}';
29     }
30     
31     public String getName() {
32         return name;
33     }
34     
35     public void setName(String name) {
36         this.name = name;
37     }
38     
39     public int getAge() {
40         return age;
41     }
42     
43     public void setAge(int age) {
44         this.age = age;
45     }
46     //覆写排序的规则
47     @Override
48     public int compareTo(Person o) {
49         // return 0;//认为元素都是相同的
50         //自定义比较的规则,如:比较两个人的年龄(this,参数Person)
51     
52         //return this.getAge() - o.getAge();//年龄升序排序
53         return o.getAge() - this.getAge();//年龄降序序排序
54     }
55 }

sort(List<T> list,Comparator<? super T>实现Comparator接口

1 public static <T> void sort(List<T> list,Comparator<? super T> );
2              //将集合中元素按照指定规则排序
3 //Comparator接口中的排序规则:
4 //         o1 - o2 :升序排序,反之,就是降序排序

Comparator和Comparable两个接口的区别:

  • Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法

  • Comparator:相当于找一个第三方的裁判,比较两个。

 1 package _5Collections集合工具类;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.Comparator;
 6 
 7 /**
 8  * @Author Admin
 9  * @Classname DemoCollectionCopartorSort
10  * @Package _5Collections集合工具类
11  * @GreatDate 2020/04/19 21:18:13
12  * @Description TODO 第二种排序方法
13  */
14 /*
15     public static <T> void sort(List<T> list,Comparator<? super T> );
16                     将集合中元素按照指定规则排序
17     Comparator和Comparable两个接口的区别:
18         Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法
19         Comparator:相当于找一个第三方的裁判,比较两个。
20     Comparator接口中的排序规则:
21         o1 - o2 :升序排序,反之,就是降序排序
22  */
23 public class DemoCollectionCopartorSort {
24     public static void main(String[] args) {
25         ArrayList<Integer> list = new ArrayList<>();
26         list.add(1);
27         list.add(6);
28         list.add(8);
29         list.add(5);
30         System.out.println(list);//[1, 6, 8, 5]
31         
32         Collections.sort(list, new Comparator<Integer>() {
33             //覆写比较的规则
34             @Override
35             public int compare(Integer o1, Integer o2) {
36                 // return o1 - o2;//升序排序
37                 return o2 - o1;//降序排序
38             }
39         });
40         System.out.println(list);
41         System.out.println("------------------");
42         
43         ArrayList<Student> list1 = new ArrayList<>();
44         list1.add(new Student("张三", 26));
45         list1.add(new Student("李四", 28));
46         list1.add(new Student("王五", 22));
47         list1.add(new Student("赵六", 22));
48         /*//一个规则
49         Collections.sort(list1, new Comparator<Student>() {
50             @Override
51             public int compare(Student o1, Student o2) {
52                 return o1.getAge() - o2.getAge();//按照年龄的升序排序
53             }
54         });*/
55         //多个规则;扩展,了解
56         Collections.sort(list1, new Comparator<Student>() {
57             @Override
58             public int compare(Student o1, Student o2) {
59                 //按照年龄的升序排序
60                 int result = o1.getAge() - o2.getAge();
61                 //如果两个人年龄相同,再使用姓名比较第一个字
62                 if (result == 0) {
63                     result = o1.getName().charAt(0) - o2.getName().charAt(0);
64                 }
65                 return result;
66             }
67         });
68         System.out.println(list1);
69     }
70 }

 

实体类

 1 package _5Collections集合工具类;
 2 
 3 /**
 4  * @Author Admin
 5  * @Classname Student
 6  * @Package _5Collections集合工具类
 7  * @GreatDate 2020/04/19 21:56:29
 8  * @Description TODO
 9  */
10 public class Student {
11     private String name;
12     private int age;
13     
14     public Student() {
15     }
16     
17     @Override
18     public String toString() {
19         return "Student{" +
20             "name='" + name + '\'' +
21             ", age=" + age +
22             '}';
23     }
24     
25     public Student(String name, int age) {
26         this.name = name;
27         this.age = age;
28     }
29     
30     public String getName() {
31         return name;
32     }
33     
34     public void setName(String name) {
35         this.name = name;
36     }
37     
38     public int getAge() {
39         return age;
40     }
41     
42     public void setAge(int age) {
43         this.age = age;
44     }
45 }


  

           

 


 

 

posted @ 2020-04-21 22:36  Elvin熊  阅读(421)  评论(0)    收藏  举报