操作集合的工具类Collection

概述

该工具类中提供了大量的方法对集合进行排序、查询和修改等,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。

排序操作

  • void reverse(List list):反转指定List集合中的元素顺序;
  • void shuffle(List list):打乱集合元素原有的顺序;
  • void sort(List list):根据元素的自然顺序对集合进行升序排序;
  • void sort(List list,Comparator c):根据Comparator产生的顺序对List集合元素进行排序;
  • void swap(List list,int i,int j):将指定集合中i处元素和j元素进行交换;
  • void rotate(List list,int distabce):当distabce为正数时,将distabce之后的元素移到集合前面,当为负数时,将distabce之前的元素移到集合后面。
        ArrayList array = new ArrayList();

        array.add(2);
        array.add(5);
        array.add(-3);
        array.add(10);
        array.add(-6);
        System.out.println(array);//[2, 5, -3, 10, -6]

        //反转
        Collections.reverse(array);
        System.out.println(array);//[-6, 10, -3, 5, 2]

        //按自然顺序排序
        Collections.sort(array);
        System.out.println(array);//[-6, -3, 2, 5, 10]

        //随机排序
        Collections.shuffle(array);
        System.out.println(array);//[5, -3, -6, 10, 2]

查找与替换

package org.westos.Mydemo;

import sun.plugin.javascript.navig.Link;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SearchAndInset {
    public static void main(String[] args) {
        ArrayList<Integer> nums = new ArrayList<>();

        nums.add(2);
        nums.add(-13);
        nums.add(2);
        nums.add(-4);
        nums.add(7);
        nums.add(4);
        nums.add(3);
        nums.add(2);

        //使用二分搜索法搜索指定的List集合元素,前提条件是集合处于有序状态
//        Collections.sort(nums);
//        System.out.println(nums);//[-13, -4, 2, 2, 2, 3, 4, 7]
//        System.out.println(Collections.binarySearch(nums,3));//5

        //返回给定集合中的最大值和最小值
        System.out.println(Collections.max(nums));//7
        System.out.println(Collections.min(nums));//13

        //Object max(Collection coll,Comparator comp)根据Comparator指定的顺序获取最大值
        //Object min(Collection coll,Comparator comp)根据Comparator指定的顺序获取最小值

        //使用指定元素替换指定List集合中的所有元素
//        Collections.fill(nums,000);
//        System.out.println(nums);//[0, 0, 0, 0, 0, 0, 0, 0]

        //返回指定集合中指定元素出现的次数
        System.out.println(Collections.frequency(nums,2));//3

        //返回子list在父list中第一次出现的位置索引,如果没有出现则返回-1
//        System.out.println(nums);[2, -13, 2, -4, 7, 4, 3, 2]
        List<Integer> list = nums.subList(3, 5);
        System.out.println(Collections.indexOfSubList(nums,list));//3
        //返回子list在父list中最后一次出现的位置索引,如果没有出现则返回-1
        List<Integer> list1 = nums.subList(2,3);
        System.out.println(Collections.lastIndexOfSubList(nums,list1));//7

        //使用一个新的newVal替换List对象的所有旧值
        Collections.replaceAll(nums,2,11);
        System.out.println(nums);//[11, -13, 11, -4, 7, 4, 3, 11]

    }
}

设置不可变集合
Collections提供了如下三个类方法来返回一个不可变集合:

  • emptyXxx():返回一个空的、不可变的集合对象,此处的集合可以是List、也可以是SortedSet、Set还可以是Map、hashMap;
  • singletonXxx()返回一个只包含指定对象的、不可变的集合对象。
  • unmodifibleXxx():返回指定集合对象的不可变视图。
        List list = Collections.emptyList();

        Set set = Collections.singleton("java");

        HashMap scores = new HashMap<>();
        scores.put("chinese",80);
        scores.put("English",500);

        Map map = Collections.unmodifiableMap(scores);

        //试图向不可变集合中添加元素
        list.add("test1");
        set.add("test2");
        map.put("test3",30);
        //运行之后引发UnsupportedOperationException异常

猜你喜欢

转载自blog.csdn.net/mashaokang1314/article/details/83792492