The Collections tool class provides a large number of operations for Collection/Map. This article mainly introduces the Collections tool class_Compiled by the Power Node Java Academy. Friends in need can refer to
The Collections tool class provides a large number of operations for Collection/Map. It can be divided into four categories, all of which are Static (static) method:
1. Sorting operation (mainly related to List interface)
public void testSort() { System.out.println("原始顺序:" + list); Collections.reverse(list); System.out.println("reverse后顺序:" + list); Collections.shuffle(list); System.out.println("shuffle后顺序:" + list); Collections.swap(list, 1, 3); System.out.println("swap后顺序:" + list); Collections.sort(list); System.out.println("sort后顺序:" + list); Collections.rotate(list, 1); System.out.println("rotate后顺序:" + list); }
Reverse order: [c Zhao Wu, e Qian Qi, a Li Si, d Sun Liu, b Zhang San]
The order after shuffle: [b Zhang San, c Zhao Wu, d Sun Liu, e Qian Qi, a Li Si]
The order after swap: [b Zhang San, e Qian Qi, d Sun Six, c Zhao Wu, a Li Si]
The order after sorting: [a Li Si, b Zhang San, c Zhao Wu, d Sun Liu, e Qian Qi]
The order after rotating: [e Qian Qi, a Li Si, b Zhang San, c Zhao Wu, d Sun Liu]
2. Search and replace (mainly related to Collection interface)
public void testSearch() { System.out.println("给定的list:" + list); System.out.println("max:" + Collections.max(list)); System.out.println("min:" + Collections.min(list)); System.out.println("frequency:" + Collections.frequency(list, "a李四")); Collections.replaceAll(list, "a李四", "aa李四"); System.out.println("replaceAll之后:" + list); // 如果binarySearch的对象没有排序的话,搜索结果是不确定的 System.out.println("binarySearch在sort之前:" + Collections.binarySearch(list, "c赵五")); Collections.sort(list); // sort之后,结果出来了 System.out.println("binarySearch在sort之后:" + Collections.binarySearch(list, "c赵五")); Collections.fill(list, "A"); System.out.println("fill:" + list); }
The given list: [b Zhang San, d Sun Liu, a Li Si, e Qian Qi, c Zhao Wu]
min:a Li Si
frequency: 1
After replaceAll: [ b Zhang San, d Sun Liu, aa Li Si, e Qian Qi, c Zhao Wu]
binarySearch before sort: -4
binarySearch after sort: 2
fill: [A, A, A , A, A]
Collections tool class provides multiple syn
onizedXxx Method, this method returns the synchronization object corresponding to the specified collection object, thereby solving the security problem of threads when multiple threads concurrently access the collection. HashSet, ArrayList, and HashMap are all thread-unsafe. If synchronization needs to be considered, use these methods. These methods mainly include: synchronizedSet, synchronizedSortedSet, synchronizedList, synchronizedMap, synchronizedSortedMap.
It should be pointed out in particular that when using the iterative method to traverse the collection, you need to manually synchronize the returned collection.
Map m = Collections.synchronizedMap(new HashMap()); ... Set s = m.keySet(); // Needn't be in synchronized block ... synchronized (m) { // Synchronizing on m, not s! Iterator i = s.iterator(); // Must be in synchronized block while (i.hasNext()) foo(i.next()); }
Collections has three types of methods that can return an immutable collection:
1. emptyXxx(): returns an Empty immutable collection object
2. singletonXxx(): Returns an immutable collection object that only contains the specified object.
3. unmodifiableXxx(): Returns the immutable value of the specified collection object
View5.Others1. disjoint(Collection> c1, Collection> c2) - Returns true if there are no identical elements in the two specified collections.
2. addAll(Collection super T> c, T... a) - A convenient way to add all specified elements to the specified collection. Demonstration:
3. Comparator
public void testOther() { List<String> list1 = new ArrayList<String>(); List<String> list2 = new ArrayList<String>(); // addAll增加变长参数 Collections.addAll(list1, "大家好", "你好","我也好"); Collections.addAll(list2, "大家好", "a李四","我也好"); // disjoint检查两个Collection是否的交集 boolean b1 = Collections.disjoint(list, list1); boolean b2 = Collections.disjoint(list, list2); System.out.println(b1 + "\t" + b2); // 利用reverseOrder倒序 Collections.sort(list1, Collections.reverseOrder()); System.out.println(list1); }
输出
true false
[我也好, 大家好, 你好]
6. 完整代码
package com.bjpowernode.test; import java.util.*; import org.junit.Before; import org.junit.Test; public class CollectionsTest { private Listlist = new ArrayList (); @Before public void init() { // 准备测试数据 list.add("b张三"); list.add("d孙六"); list.add("a李四"); list.add("e钱七"); list.add("c赵五"); } @Test public void testUnmodifiable() { System.out.println("给定的list:" + list); List<String> unmodList = Collections.unmodifiableList(list); unmodList.add("再加个试试!"); // 抛出:java.lang.UnsupportedOperationException // 这一行不会执行了 System.out.println("新的unmodList:" + unmodList); } @Test public void testSort() { System.out.println("原始顺序:" + list); Collections.reverse(list); System.out.println("reverse后顺序:" + list); Collections.shuffle(list); System.out.println("shuffle后顺序:" + list); Collections.swap(list, 1, 3); System.out.println("swap后顺序:" + list); Collections.sort(list); System.out.println("sort后顺序:" + list); Collections.rotate(list, 1); System.out.println("rotate后顺序:" + list); } @Test public void testSearch() { System.out.println("给定的list:" + list); System.out.println("max:" + Collections.max(list)); System.out.println("min:" + Collections.min(list)); System.out.println("frequency:" + Collections.frequency(list, "a李四")); Collections.replaceAll(list, "a李四", "aa李四"); System.out.println("replaceAll之后:" + list); // 如果binarySearch的对象没有排序的话,搜索结果是不确定的 System.out.println("binarySearch在sort之前:" + Collections.binarySearch(list, "c赵五")); Collections.sort(list); // sort之后,结果出来了 System.out.println("binarySearch在sort之后:" + Collections.binarySearch(list, "c赵五")); Collections.fill(list, "A"); System.out.println("fill:" + list); } @Test public void testOther() { List<String> list1 = new ArrayList<String>(); List<String> list2 = new ArrayList<String>(); // addAll增加变长参数 Collections.addAll(list1, "大家好", "你好","我也好"); Collections.addAll(list2, "大家好", "a李四","我也好"); // disjoint检查两个Collection是否的交集 boolean b1 = Collections.disjoint(list, list1); boolean b2 = Collections.disjoint(list, list2); System.out.println(b1 + "\t" + b2); // 利用reverseOrder倒序 Collections.sort(list1, Collections.reverseOrder()); System.out.println(list1); } }
【相关推荐】
1. Java免费视频教程
2. YMP在线手册
3. 全面解析Java注解
The above is the detailed content of The Collections tool class provides four static method operations. For more information, please follow other related articles on the PHP Chinese website!