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,intint):将指定 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());
        }


    }
请从键盘随机输入10个整数保存到List中,并按倒序、从大 到小的顺序显示出来

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);
    }
请把学生名与考试分数录入到集合中,并按分数显示前三名 成绩学员的名字
原文地址:https://www.cnblogs.com/zhaoyunlong/p/13032938.html