Collections工具类:操作集合的工具类
Java提供了一个操作Set List Map等集合的工具类:Collections,该工具类提供了大量方法对集合元素进行排序、查询和修改等操作。还提供了将集合对象设置为不可变,对集合对象实现同步控制等方法。
排序操作
ArrayList arrayList = new ArrayList();
arrayList.add(2);
arrayList.add(-1);
arrayList.add(4);
arrayList.add(6);
System.out.println(arrayList); // [2, -1, 4, 6]
Collections.sort(arrayList); //按自然顺序排序
System.out.println(arrayList); //[-1, 2, 4, 6]
Collections.reverse(arrayList); //按倒序排序
System.out.println(arrayList); //[6, 4, 2, -1]
Collections.swap(arrayList,0,1);//将0号索引与1号索引的元素换一下
System.out.println(arrayList); //[4, 6, 2, -1]
Collections.shuffle(arrayList); //随机排序
System.out.println(arrayList);
查找、替换操作
ArrayList arrayList = new ArrayList();
arrayList.add(2);
arrayList.add(-1);
arrayList.add(4);
arrayList.add(6);
System.out.println(arrayList);
System.out.println(Collections.max(arrayList)); //按照自然排序,输出最大元素
System.out.println(Collections.min(arrayList)); //按照自然排序,输出最小元素
Collections.replaceAll(arrayList,4,-1);//把所有的4换成-1
System.out.println(arrayList);
System.out.println(Collections.frequency(arrayList,-1)); //输出-1在arrayList中出现的次数
Collections.sort(arrayList); //只有排序后的List集合才能用二分法查询
System.out.println(Collections.binarySearch(arrayList,6)); //二分法查询6的索引
同步控制
Collections中提供了多个synchronizedXxx()方法,该方法可以将指定集合包装成线程同步的集合,从而解决多线程并发访问集合时的线程安全问题。
Java中常用的集合框架中的实现类:HashSet TreeSet ArrayList ArrayDeque LinkedList HashMap 和 TreeMap 都是线程不安全的。如果有多个线程访问它们,而且有超过一个的线程试图修改它们,则存在线程安全的问题。
Collection collection = Collections.synchronizedCollection(new ArrayList());
List list = Collections.synchronizedList(new ArrayList());
Set set = Collections.synchronizedSet(new HashSet());
Map map = Collections.synchronizedMap(new HashMap());
设置不可变集合
//创建一个空的、不可改变的List对象
List unmodifiableList = Collections.emptyList();
//创建一个只有一个元素,且不可改变的Set对象
Set unmodifiableSet = Collections.singleton("only");
//创建一个普通的Map对象
Map map = new HashMap();
map.put("saber", "阿尔托莉雅");
map.put("archer", "emiya");
//返回map集合的不可变版本,只读版本
Map unmodifiableMap = Collections.unmodifiableMap(map);
System.out.println(unmodifiableMap);
古老的接口Enumeration接口用来遍历古老的集合Vector Hashtable
Vector vector = new Vector();
vector.add(1);
vector.add(2);
vector.add(3);
Hashtable hashtable = new Hashtable();
hashtable.put("a",1);
hashtable.put("b",2);
hashtable.put("c",3);
Enumeration enumeration = vector.elements();
while (enumeration.hasMoreElements()){
System.out.println(enumeration.nextElement());
}
Enumeration keyEm = hashtable.keys();
while (keyEm.hasMoreElements()){
Object key = keyEm.nextElement();
System.out.println(key + "-->" + hashtable.get(key));
}
原文地址:https://www.cnblogs.com/woshi123/p/12509858.html
时间: 2024-11-06 04:50:05