Collections 工具类
Collection和Collections的区别;
Collection是创建集合的接口,Collections是操作集合的工具类
Collections 是一个操作List, Set, Map 等集合的工具类
Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作, 还提供了对集合对象设置不可变、对集合对象实现同步控制等方法
操作方法(均为static静态的)
排序操作: reverse(List):反转 List 中元素的顺序 shuffle(List):对 List 集合元素进行随机排序 sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序 sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序 swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换
查找、替换:
Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
Object max(Collection,Comparator):根据 Comparator 指定的顺序,返回 给定集合中的最大元素
Object min(Collection) Object min(Collection,Comparator) int frequency(Collection,Object):返回指定集合中指定元素的出现次数
void copy(List dest,List src):将src中的内容复制到dest中 boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的所有旧值
当使用Collections.max和min的时候 必须集合内的元素是同一类型的 否则无法进行获取
eg:
如果不是同一类型则报错:Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String
//ListTwo: [1, 老王, 老张, 隔壁老王, 1, 34, 65, 897] // list [1, 34, 65, 897] System.out.println(Collections.max(listTwo)); // 因为ListTwo内存储不同的数据类型,既有int又有String所以无法进行对比
当集合内的元素是同一类型才可以获取最大值和最小值
//ListTwo: [1, 老王, 老张, 隔壁老王, 1, 34, 65, 897] // list [1, 34, 65, 897] System.out.println(Collections.max(list)); // 最大值 System.out.println(Collections.min(list)); // 最小值 当时同一类型的时候才可以使用值获取
Practices
1: 请从键盘随机输入10个整数保存到List中,并按倒序、从大 到小的顺序显示出来
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List list = new ArrayList(); for (int i = 0; i < 10; i++) { int num = scanner.nextInt(); list.add(num); } // 倒叙排列 Collections.reverse(list); Iterator iterator = list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } //从大到小 Collections.sort(list); // 默认从小到大 Collections.reverse(list); iterator = list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } }
2: 请把学生名与考试分数录入到集合中,并按分数显示前三名 成绩学员的名字
TreeSet(Student(name,score,id));
public static void main(String[] args) { List list = new ArrayList(); list.add(75); list.add(63); list.add(87); list.add(98); System.out.println(list); for (int i = 0; i < 3 ; i++) { list.remove(Collections.max(list)); } System.out.println(list); }