操作集合的工具类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异常