Die Toolklasse „Collections“ bietet eine große Anzahl von Operationen für Collection/Map. In diesem Artikel wird hauptsächlich die von der Power Node Java Academy zusammengestellte Tool-Klasse „Collections“ vorgestellt.
Die Collections-Tool-Klasse bietet eine große Anzahl von Operationen für Collection/Map Kategorien, alle davon sind statische (statische) Methoden:
1. Sortiervorgang (hauptsächlich im Zusammenhang mit der Listenschnittstelle)
reverse( Listenliste): Kehrt die Reihenfolge der Elemente in der angegebenen Listensammlung um
shuffle (Listenliste): Sortiert (mischen) die Elemente in der Liste zufällig
sort(List list): Sortieren Sie die Elemente in der Liste in natürlich aufsteigender Reihenfolge
sort(List list, Comparator c ): Sortieren mit einem benutzerdefinierten Komparator
swap(List list, int i, int j): Tauschen Sie das Element bei i und das Element außerhalb von j in der angegebenen Listensammlung
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); }
Umgekehrte Reihenfolge: [c Zhao Wu, e Qian Qi, a Li Si, d Sun Six, b Zhang San]
Die Reihenfolge nach dem Mischen: [b Zhang San, c Zhao Wu, d Sun Liu, e Qian Qi, a Li Si]
Die Reihenfolge nach dem Tauschen: [b Zhang San, e Qian Qi, d Sun Liu, c Zhao Wu, a Li Si]
Die Reihenfolge nach dem Sortieren: [a Li Si, b Zhang San, c Zhao Wu, d Sun Liu , e Qian Qi]
Die Reihenfolge nach dem Rotieren: [e Qian Seven, a Li Si, b Zhang San, c Zhao Wu, d Sun Liu]
2 bezogen auf die Sammlungsschnittstelle)
< basierend auf dem benutzerdefinierten Komparator zurück 🎜>
fill(List list, Object obj): Verwenden Sie das angegebene Objekt zum Füllen vonpublic 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); }
durch Feste Liste: [b Zhang San, d Sun Liu, a Li Si, e Qian Qi, c Zhao Wu ]
max: e Qian Qi
Häufigkeit: 1
Nach replaceAll: [b Zhang San, d Sun Liu, aa Li Si, e Qian Qi, c Zhao Wu]
Binärsuche vor Sortierung: -4
Binärsuche nach Sortierung: 2
Ausfüllen: [A , A, A, A, A]
3 🎜>
Collections-Tool-Klasse bietet mehrere synchr
onizedXxx-Methoden. Diese Methode gibt das Synchronisationsobjekt zurück, das dem angegebenen Sammlungsobjekt entspricht, und löst dadurch die
Problem von Threads, wenn mehrere Threads gleichzeitig auf die Sammlung zugreifen. HashSet, ArrayList und HashMap sind alle Thread-unsicher. Wenn eine Synchronisierung in Betracht gezogen werden muss, verwenden Sie diese Methoden. Zu diesen Methoden gehören hauptsächlich: synchronisiertSet, synchronisiertSortedSet, synchronisiertdList, synchronisiertMap, synchronisiertSortedMap. Insbesondere ist es erforderlich, die zurückgegebene Sammlung manuell zu synchronisieren, wenn die iterative Methode zum Durchlaufen der Sammlung verwendet wird.
4. Festlegen unveränderlicher Sammlungen
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 verfügt über drei Arten von Methoden, die eine unveränderliche Sammlung zurückgeben können: 1. : Gibt ein leeres unveränderliches Sammlungsobjekt zurück
2. singletonXxx(): Gibt ein unveränderliches Sammlungsobjekt zurück, das nur das angegebene Objekt enthält.
3. unmodifiableXxx(): Gibt die unveränderliche
Ansicht des angegebenen Sammlungsobjekts zurückpublic void testUnmodifiable() { System.out.println("给定的list:" + list); List<String> unmodList = Collections.unmodifiableList(list); unmodList.add("再加个试试!"); // 抛出:java.lang.UnsupportedOperationException // 这一行不会执行了 System.out.println("新的unmodList:" + unmodList); }
2. addAll(Collection super T> c, T... a) – Eine praktische Möglichkeit, alle angegebenen Elemente zur angegebenen Sammlung hinzuzufügen. Demonstration: Collections.addAll(flavors, „Peaches 'n Plutonium“, „Rocky Racoon“);
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注解
Das obige ist der detaillierte Inhalt vonDie Toolklasse „Collections' stellt vier statische Methodenoperationen bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!