ホームページ  >  記事  >  Java  >  コレクション ツール クラスは、4 つの静的メソッド操作を提供します。

コレクション ツール クラスは、4 つの静的メソッド操作を提供します。

Y2J
Y2Jオリジナル
2017-05-09 11:31:433032ブラウズ

コレクション ツール クラスは、コレクション/マップに対する多数の操作を提供します。この記事では、Power Node Java Academy によってコンパイルされたコレクション ツール クラスを主に紹介します。必要な方は参照してください。コレクション ツール クラスは、コレクション/マップの多数の操作を提供します。メソッド:


1. 並べ替え操作 (主に List インターフェイスに関連)


     reverse(List list): 指定された List コレクション内の要素の順序を反転します
  •  (List list): List 内の要素をランダムに並べ替え (シャッフル) します
  •  sort(List list): List 内の要素を自然昇順に並べ替えます
  •  sort(List list, Comparator c):カスタムコンパレータの並べ替え
  •  swap(List list, int i, int j): 指定された List コレクションの i の要素と j の要素を入れ替えます
  • rotate(List list, int distance):すべての要素を回転し、指定された長さだけ右にシフトします。距離がサイズと等しい場合、結果は変更されません
  • 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);
      }
  • 出力


元の順序: [b Zhang San、d Sun Liu、a Li Si、e Qian] Qi、c Zhao Wu]

リバース シャッフル後の順序: [c Zhao Wu、e Qian Qi、a Li Si、d Sun Liu、b Zhang San]

シャッフル後の順序: [b Zhang San、c Zhao Wu、d Sun Liu、e Qian Qi、a Li Si]
入れ替え後の順序: [b Zhang San、e Qian Qi、d Sun Liu、c Zhao Wu、a Li Si]
並べ替え後の順序: [a Li Si、b Zhang San 、c 趙呉、d 孫劉、e 銭七]
回転後の順序: [e 銭旗、a 李思、b 張三、c 趙呉、d 孫劉]

検索と置換 (主に 2. Collectionインターフェースに関連)


     binarySearch(List list, Object key): コレクションがソートされている場合、バイナリ検索メソッドを使用してList内の指定されたオブジェクトのインデックスを取得します
  •  max(Collection coll): 最大の要素を返す
  •  max(Collection coll, Comparator comp): カスタムコンパレータに従って、最大の要素を返す
  •  min(Collection coll): 最小の要素を返す
  •  min(Collection coll, Comparator comp): カスタムコンパレーターに従って、最小の要素を返します
  •  fill(List list, Object obj): 指定されたオブジェクトを使用して塗りつぶします
  • frequency( Collection Object o): 指定されたオブジェクトが指定されたコレクションに出現する回数を返します
  •  replaceAll(List list, Object old, Object new): 置換します
  •   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);
      }
  • Output


指定されたリスト: [ b 張三、d 孫劉、a 李四、e 銭七、c 趙呉]

最大: e 銭七

最小: a 李四
頻度: 1
置換後すべて: [b 張三、d 孫劉、aa Li Si、e Qian Qi、c Zhao Wu]
binary並べ替え前の検索: -4
binary並べ替え後の検索: 2
fill: [A、A、A、A、A]


3. 同期制御


3.コレクション ツール クラスは、複数の syn

chr

onizedXxx メソッドを提供します。このメソッドは、対応する Synchronize オブジェクトを返し、複数のスレッドがコレクションに同時にアクセスする場合のスレッドの安全性 問題を解決します。 HashSetArrayList、および HashMap はすべてスレッドセーフではありません。同期を考慮する必要がある場合は、これらのメソッドを使用してください。これらのメソッドには主に、synchronizedSet、synchronizedSortedSet、synchronizedList、synchronizedMap、synchronizedSortedMap が含まれます。
反復メソッドを使用してコレクションを走査する場合、返されたコレクションを手動で同期する必要があることに特に注意してください。

 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());
 }

4. 不変コレクションを設定する

Collections には、不変コレクションを返すことができる 3 種類のメソッドがあります:

1. emptyXxx(): 空の不変コレクション オブジェクトを返します

2.指定されたオブジェクトのみを含むコレクション オブジェクト。

3. unmodifiableXxx(): 指定されたコレクション オブジェクトの不変の

ビューを返します

1. disjoint(Collection6b3d0130bba23ae47fe2b8e8cddf0195 c1, Collection6b3d0130bba23ae47fe2b8e8cddf0195 c2) - if 指定された 2 つのコレクションに同一の要素がない場合に true を返します。

2. addAll(Collection117c5a0bdb71ea9a9d0c2b99b03abe3e c, T... a) - 指定されたすべての要素を指定されたコレクションに追加する便利な方法。デモンストレーション: 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 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注解

以上がコレクション ツール クラスは、4 つの静的メソッド操作を提供します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。