Collections:操作Collection、Map的工具类
常用方法:
一、排序操作:
- reverse(List) 反转List中元素的顺序
- shuffle(List) 对List中的元素进行随机的排序
- sort(List) 根据元素的自然排序对指定的List集合元素进行升序排序。(List中的参数必须是类或包装类)
- sort(List,Comparator) 根据指定的Comparator产生的顺序对List集合元素进行排序。(List中的参数必须是类或包装类)
- swap(List,int,int) 将集合List i 处和 j 处的元素互换
二、查找、替换操作
- Object max(Collection) 根据自然排序,返回最大的元素。(List中的参数必须是类或包装类)
- Object max(Colection,Comparator) 根据定制排序,返回最大的元素。(List中的参数必须是类或包装类)
- Object min(Collection) 根据自然排序,返回最小的元素。(List中的参数必须是类或包装类)
- Object min(Collection,Comparator) 根据定制排序,返回最小的元素。(List中的参数必须是类或包装类)
- int frequency(Collection,Object) 返回集合中指定元素出现的次数
- void copy(List dest,List src) 将src中的内容复制到dest中
- boolearn replace(List list,Object oldValue,Object newValue) 使用newValue替换list中所有的oldValue
代码举例:
import java.util.ArrayList;
import java.util.Collections;
public class CollectionTest {
public static void main(String[] args) {
CollectionTest ct = new CollectionTest();
ct.test();
}
public void test() {
ArrayList arrayList = new ArrayList();
arrayList.add(123);
arrayList.add(456);
arrayList.add(789);
arrayList.add(123);
arrayList.add("你好");
System.out.println("原始的arrayList:"+arrayList);
//reverse(List) 反转List中元素的顺序
Collections.reverse(arrayList);
System.out.println("使用Collections.reverse后的arrayList:"+arrayList+"\n");
//shuffle(List) 对List中的元素进行随机的排序
Collections.shuffle(arrayList);
System.out.println("使用Collections.shuffle后的arrayList:"+arrayList+"\n");
swap(List,int,int) 将集合List i 处和 j 处的元素互换
Collections.swap(arrayList, 0, 3);
System.out.println("使用Collections.swap(arrayList, 0, 3)后的arrayList"+arrayList+"\n");
//int frequency(Collection,Object) 返回集合中指定元素出现的次数
int frequency = Collections.frequency(arrayList, 123);
System.out.println("arrayList中123出现的次数:"+frequency+"\n");
//boolearn replace(List list,Object oldValue,Object newValue) 使用newValue替换list中所有的oldValue
Collections.replaceAll(arrayList, 123, null);
System.out.println("在arrayList中使用null替换所有的123:"+arrayList+"\n\n");
ArrayList arrayList2 = new ArrayList();
arrayList2.add("我爱你");
arrayList2.add("中国");
arrayList2.add("你好");
System.out.println("原始的arrayList2:"+arrayList2);
//sort(List) 根据元素的自然排序对指定的List集合元素进行升序排序(List中的参数必须是类或包装类)
Collections.sort(arrayList2);
System.out.println("使用Collections.sort后的arrayList2:"+arrayList2+"\n");
//max(Collection) 根据自然排序,返回最大的元素(List中的参数必须是类或包装类)
Object max = Collections.max(arrayList2);
System.out.println("自然排序后arrayList2中的max:"+max+"\n");
//Object min(Collection,Comparator) 根据定制排序,返回最小的元素(List中的参数必须是类或包装类)
Object min = Collections.min(arrayList2);
System.out.println("自然排序后arrayList2中的min:"+min+"\n");
}
}
三、保证线程安全的方法
synchronizedXxx()
该方法可以使指定的集合包装成线程安全的集合,并返回
例如:
- Collections.synchronizedList(List) 将线程不安全的List,返回线程安全的List
- Collections.synchronizedCollection(Collection) 将线程不安全的Collection,返回线程安全的Collection
- Collections.synchronizedMap(Map) 将线程不安全的Map,返回线程安全的Map
- Collections.synchronizedSet(Set) 将线程不安全的Set,返回线程安全的Set
下面以ArrayList作为示范:
public class CollectionTest {
public static void main(String[] args) {
CollectionTest ct = new CollectionTest();
ct.test();
}
public void test() {
//我们可以知道ArrayList是一个线程不安全的集合
ArrayList arrayList = new ArrayList();
arrayList.add("我爱你");
arrayList.add("中国");
arrayList.add("你好");
//将将线程不安全的集合对象作为参数传入synchronizedXxx()方法中
List synchronizedList = Collections.synchronizedList(arrayList);
//此时的synchronizedList就是线程安全的集合
System.out.println(synchronizedList);
}
}
面试题:Collection和Collections的区别?
- Collection是一个集合的接口;Collections是一个工具类
- Collections是操作Collection、Map的工具类