Maison > Java > javaDidacticiel > La classe d'outils Collections fournit quatre opérations de méthode statique

La classe d'outils Collections fournit quatre opérations de méthode statique

Y2J
Libérer: 2017-05-09 11:31:43
original
3106 Les gens l'ont consulté

La classe d'outils Collections fournit un grand nombre d'opérations pour Collection/Map. Cet article présente principalement l'outil Collections class_Compilé par la Power Node Java Academy. Les amis qui en ont besoin peuvent s'y référer

La classe d'outils Collections fournit un grand nombre d'opérations pour Collection/Carte. catégories, qui sont toutes une méthode statique (statique) :

1 Opération de tri (principalement liée à l'interface Liste)

  • .

     reverse (List list) : inverser l'ordre des éléments dans la collection List spécifiée

  •  shuffle (List list) : trier (mélanger) aléatoirement les éléments de la liste

  •  sort(Liste liste) : Trier les éléments de la Liste selon l'ordre croissant naturel

  •  sort(Liste liste, Comparateur c ) : Trier avec un comparateur personnalisé

  •  swap(List list, int i, int j) : Échangez l'élément en i et l'élément hors j dans la collection List spécifiée

  •  rotate(List list, int distance) : Décale tous les éléments vers la droite de la longueur spécifiée Si la distance est égale à la taille, le résultat reste inchangé

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);
  }
Copier après la connexion
Sortie


Ordre original : [b Zhang San, d Sun Liu, a Li Si, e Qian Qi, c Zhao Wu]

Ordre inversé : [c Zhao Wu, e Qian Qi, a Li Si, d Sun Six, b Zhang San]
L'ordre après mélange : [b Zhang San, c Zhao Wu, d Sun Liu, e Qian Qi, a Li Si]
L'ordre après échange : [b Zhang San, e Qian Qi, d Sun Liu, c Zhao Wu, a Li Si]
L'ordre après tri : [a Li Si, b Zhang San, c Zhao Wu, d Sun Liu , e Qian Qi]
L'ordre après rotation : [e Qian Seven, a Li Si, b Zhang San, c Zhao Wu, d Sun Liu]

Rechercher et remplacer (principalement 2. lié à l'interface de collection)

  •  recherche binaire (liste de liste, clé d'objet) : utilisez la méthode de recherche binaire pour obtenir l'index de l'objet spécifié dans la liste, à condition que la collection a été triée

  •  max(Collection coll) : renvoie l'élément maximum

  •  max(Collection coll, Comparator comp) : Renvoie l'élément maximum

  • < basé sur le comparateur personnalisé 🎜> min(Collection coll) : Renvoie le plus petit élément
  •  min(Collection coll , Comparator comp) : Renvoie le plus petit élément
  • < basé sur le comparateur personnalisé 🎜>

     fill(List list, Object obj) : Utilisez l'objet spécifié pour remplir
  •  Frequency(Collection Object o) : renvoie le nombre d'occurrences de l'objet spécifié dans la collection spécifiée
  •  replaceAll(List list, Object old, Object new) : remplacer
  • sortie
  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);
  }
Copier après la connexion

par Liste fixe : [b Zhang San, d Sun Liu, a Li Si, e Qian Qi, c Zhao Wu ]
max : e Qian Qi

min : a Li Si

fréquence : 1
Après replaceAll : [b Zhang San, d Sun Liu, aa Li Si, e Qian Qi, c Zhao Wu]
binarySearch avant le tri : -4
binarySearch après le tri : 2
fill: [A , A, A, A, A]



3. 🎜>

La classe d'outils Collections fournit plusieurs méthodes synchr
onizedXxx, cette méthode renvoie l'objet de synchronisation correspondant à l'objet de collection spécifié, résolvant ainsi le problème de

sécurité

problème de threads lorsque plusieurs threads accèdent simultanément à la collection. HashSet, ArrayList et HashMap sont tous dangereux pour les threads. Si la synchronisation doit être prise en compte, utilisez ces méthodes. Ces méthodes incluent principalement : synchroniséSet, synchroniséSortedSet, synchroniserdList, synchroniséMap, synchroniséSortedMap. En particulier, il est nécessaire de synchroniser manuellement la collection renvoyée lors de l'utilisation de la méthode itérative pour parcourir la collection.

4. Définir des collections immuables

 Map m = Collections.synchronizedMap(new HashMap());
   ...
 Set s = m.keySet(); // Needn&#39;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());
 }
Copier après la connexion

Collections a trois types de méthodes qui peuvent renvoyer une collection immuable : 1. : Renvoie un objet de collection immuable vide

2. singletonXxx() : Renvoie un objet de collection immuable qui contient uniquement l'objet spécifié.

3. unmodifiableXxx() : renvoie la vue

immuable de l'objet de collection spécifié

Autres
  public void testUnmodifiable() {
    System.out.println("给定的list:" + list);
    List<String> unmodList = Collections.unmodifiableList(list);
    unmodList.add("再加个试试!"); // 抛出:java.lang.UnsupportedOperationException
    // 这一行不会执行了
    System.out.println("新的unmodList:" + unmodList);
  }
Copier après la connexion
<🎜. >

1. disjoint(Collection c1, Collection c2) - Renvoie vrai s'il n'y a pas d'éléments identiques dans les deux collections spécifiées. 2. addAll(Collection c, T... a) - Un moyen pratique d'ajouter tous les éléments spécifiés à la collection spécifiée. Démonstration :

Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");


3. Comparator reverseOrder(Comparator 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);
  }
Copier après la connexion

输出

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);
  }
}
Copier après la connexion

【相关推荐】

1. Java免费视频教程

2. YMP在线手册

3. 全面解析Java注解

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal