1. Collections概述
Collections 是一个操作 Set、List 和 Map 等集合的工具类。
2. 常用方法
- 排序操作:
reverse(List):反转 List 中元素的顺序
shuffle(List):对 List 集合元素进行随机排序
sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序
sort(List,Comparator),根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
swap(List,int, int),将指定 List 集合中的 i 处元素和 j 处元素进行交换
@Test
public void test01(){
List list = Arrays.asList(412,53,67,35,64,75);
System.out.println(list);
//revere()
Collections.reverse(list);
System.out.println(list);
//shuffle()
Collections.shuffle(list);
System.out.println(list);
//sort() 升序
Collections.sort(list);
System.out.println(list);
//降序(需要重写compare方法)
Collections.sort(list, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Integer && o2 instanceof Integer){
Integer i1 = (Integer) o1;
Integer i2 = (Integer) o2;
return i1 - i2;
}
throw new RuntimeException("类型不匹配");
}
});
System.out.println(list);
}
- 查找:
Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
Object max(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最大元素
Object min(Collection):根据元素的自然顺序:返回给定集合中的最小元素
Object min(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最小元素
int binarySearch(List list,T key):用二分查找在List集合中查找某个元素的下标
int binarySearch(List list,T key,Comparator c):用二分查找在List集合中查找某个元素的下标,根据 Comparator 指定的顺序
int frequency(Collection c,object o):返回指定集合中指定元素的出现次数
- 复制、替换:
void copy(List dest,List src):将src中的内容复制到dest中
boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的所有旧值
提供了多个unmodifiableXxx()方法:该方法返回指定 Xxx的不可修改的视图。
public void test02(){
//void copy(List dest,List src):将src中的内容复制到dest中
List src = Arrays.asList(412,53,67,35,64,75);
//要先把src的大小赋给dest
List dest = Arrays.asList(new Object[src.size()]);
Collections.copy(dest,src);
System.out.println(dest);
//unmodifiableXxx()方法:该方法返回指定 Xxx的不可修改的视图。
List list = Collections.unmodifiableList(src);
//不可以写,只可以读
System.out.println(list.get(1)); //53
}
- 添加:
boolean addALL(Collection c,T...elements)将所有指定元素添加到指定 collection 中
- 同步:
Collections 类中提供了多个 synchronizedXxx() 方法,该方法可使将指定集合包装成线程同步的集合,从而可以使集合变成线程安全
public void test03(){
List list = new ArrayList();
//Collections 类中提供了多个 synchronizedXxx() 方法
// 返回的List2就是线程安全的
List list2 = Collections.synchronizedList(list);
HashMap map1 = new HashMap();
//返回的mop2就是线程安全的
Map map2 = Collections.synchronizedMap(map1);
}