Heim  >  Artikel  >  Java  >  Die Toolklasse „Collections“ stellt vier statische Methodenoperationen bereit

Die Toolklasse „Collections“ stellt vier statische Methodenoperationen bereit

Y2J
Y2JOriginal
2017-05-09 11:31:433030Durchsuche

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

  •  rotieren(List list, int distance): Alle Elemente um die angegebene Länge nach rechts verschieben. Wenn der Abstand gleich der Größe ist, bleibt das Ergebnis unverändert

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


Ursprüngliche Reihenfolge: [b Zhang San, d Sun Liu, a Li Si, e Qian Qi, c Zhao Wu]

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)

  •  Binärsuche (Listenliste, Objektschlüssel): Verwenden Sie die binäre Suchmethode, um den Index des angegebenen Objekts in der bereitgestellten Liste abzurufen dass die Sammlung sortiert wurde

  •  max(Collection coll): Gibt das maximale Element zurück

  •  max(Collection coll, Comparator comp) : Gibt das maximale Element zurück

  •  min(Collection coll): Gibt das kleinste Element zurück
  •  min(Collection coll , Komparator comp): Gibt das kleinste Element
  •  fill(List list, Object obj): Verwenden Sie das angegebene Objekt zum Füllen von
  •  Frequency(Collection Object o): Gibt zurück, wie oft das angegebene Objekt in der angegebenen Sammlung erscheint
  •  replaceAll(List list, Object old, Object new): Ersetzen Sie
  • Ausgabe
  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

min: a Li Si

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

Sicherheit

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ück

5 >

  public 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 List list = 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn