Collections工具类
-
介绍
- Collections是单列集合的工具类,里面所有的方法都是静态方法,可以对集合进行一些操作。
-
常用方法(常用方法)
方法 说明 static void shuffle(List<?> list) 随机打乱集合元素的顺序 static void sort(List list) 集合的排序(从小到大) static void sort(List list,Comparator<? super T> ) 按照指定的方式排序 -
代码示例
package com.itheima_01; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test01 { public static void main(String[] args) { //创建集合 List<Integer> list = new ArrayList<>(); list.add(11); list.add(33); list.add(66); list.add(123); list.add(9); //static void shuffle(List<?> list) //随机打乱集合元素的顺序 Collections.shuffle(list); System.out.println("打乱顺序:" + list); //static <T> void sort(List<T> list) //集合的排序(从小到大) Collections.sort(list); System.out.println("排序之后:" + list); } }
-
字符串的比较规则
package com.itheima_01; import java.util.ArrayList; import java.util.Collections; public class Test02 { public static void main(String[] args) { //创建集合 ArrayList<String> list = new ArrayList<>(); list.add("abc"); list.add("def"); list.add("abcd"); list.add("123"); list.add("a12"); list.add("金泫雅"); //排序 Collections.sort(list); //从小到大 /* 字符串排序规则: 从前往后一个一个判断字母的字符值 */ System.out.println(list); System.out.println('a'+0); //97 System.out.println('金'+0); //26611 } }
Comparator比较器
-
compare方法的解释
参数: o1是要比较的元素 o2是已经排好序的元素 返回值: 如果返回的是一个正数,会把元素放在后面 如果返回的是一个负数,会把元素放在前面 如果返回的是一个零,认为元素大小相同,不移动元素
-
整数类型从大到小排列
package com.itheima_01; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /* 匿名内部类的作用是简化代码,不用单独定义子类 格式: new 父类/接口(){ 重写方法; }; */ public class Test03 { public static void main(String[] args) { //创建集合 List<Integer> list = new ArrayList<>(); list.add(11); list.add(33); list.add(56); list.add(123); list.add(9); //排序 Collections.sort(list,new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { //return o1 - o2; //从小到大 //return o2 - o1; //从大到小 return -1; } }); System.out.println(list); } }
-
自定义类型按照年龄从小到大排列
package com.itheima_01; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Test04 { public static void main(String[] args) { //创建集合 ArrayList<Student> list = new ArrayList<>(); //添加 list.add(new Student("迪丽热巴",38)); list.add(new Student("金泫雅",23)); list.add(new Student("唐嫣",28)); //排序 //存储的是学生对象,学生对象没有排序比较规则 //Collections.sort(list); //给出排序规则 Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { //要求:年龄从小到大排序 return o1.getAge() - o2.getAge(); } }); //打印 System.out.println(list); } }
-
自定义类型按照年龄从小到大排列,如果年龄相同,姓名短的在前,姓名长的在后
package com.itheima_01; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Test05 { public static void main(String[] args) { //创建集合 ArrayList<Student> list = new ArrayList<>(); //添加元素 list.add(new Student("唐嫣",38)); list.add(new Student("金泫雅",23)); list.add(new Student("迪丽热巴",28)); list.add(new Student("貂蝉",28)); list.add(new Student("杨幂",28)); //排序 //按照年龄从小到大排列,如果年龄相同,姓名短的在前,姓名长的在后 Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { if(o1.getAge() == o2.getAge()){ //年龄相同 //比较姓名从短到长 return o1.getName().length() - o2.getName().length(); }else{ //年龄不相同 //年龄从小到大 return o1.getAge() - o2.getAge(); } } }); //打印 System.out.println(list); } }