欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

操作集合的工具类Collection

程序员文章站 2024-01-14 08:58:10
...

概述

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

排序操作

  • 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异常