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 //将集合中元素按照指定规则排
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 }
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 }
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 }

浙公网安备 33010602011771号