Heim >Java >javaLernprogramm >Die Toolklasse „Collections' stellt vier statische Methodenoperationen bereit
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); }Ausgabe
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)
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); }
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); }1. disjoint(Collection6b3d0130bba23ae47fe2b8e8cddf0195 c1, Collection6b3d0130bba23ae47fe2b8e8cddf0195 c2) – Gibt true zurück, wenn in den beiden angegebenen Sammlungen keine identischen Elemente vorhanden sind.
2. addAll(Collection117c5a0bdb71ea9a9d0c2b99b03abe3e 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. Comparator8742468051c85b06f0a0af9e3e506b5c reverseOrder(Comparator8742468051c85b06f0a0af9e3e506b5c cmp) - 返回一个比较器,它强行反转指定比较器的顺序。如果指定比较器为 null,则此方法等同于 reverseOrder()(换句话说,它返回一个比较器,该比较器将强行反转实现 Comparable 接口那些对象 collection 上的自然顺序)。
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!