Maison > Java > javaDidacticiel > le corps du texte

Comment utiliser la classe d'outils intégrée de Springboot, CollectionUtils

PHPz
Libérer: 2023-05-16 13:19:21
avant
1058 Les gens l'ont consulté

org.springframework.util.CollectionUtils

Jugement de la collection

boolean hasUniqueObject(Collection collection)

À partir des commentaires du code source, il est utilisé pour déterminer si chaque élément de List/Set est unique, c'est-à-dire s'il existe aucun élément unique dans List/Set Il y a des éléments en double. Mais ici, je veux vous dire de ne pas utiliser cette méthode, car cette méthode a des bugs, pourquoi ? Voici le code source de Spring-core-5.2.13.RELEASE.jar. Regardez la ligne 12. Les personnes prudentes constateront que != est utilisé pour comparer si deux objets sont égaux. Vous souvenez-vous de la différence entre « = » et « égal » ? L'opérateur "==" est spécialement utilisé pour comparer si les valeurs de deux variables sont égales, et la méthode equals() est utilisée pour comparer si le contenu de deux objets indépendants est le même. Ainsi, si les éléments de la collection sont des valeurs numériques, vous pouvez utiliser "==" pour comparaison. S'il s'agit d'objets de référence ordinaires, vous n'obtiendrez pas le résultat correct.

public static boolean hasUniqueObject(Collection<?> collection) {
   if (isEmpty(collection)) {
      return false;
   }
   boolean hasCandidate = false;
   Object candidate = null;
   for (Object elem : collection) {
      if (!hasCandidate) {
         hasCandidate = true;
         candidate = elem;
      }
      else if (candidate != elem) {
         return false;
      }
   }
   return true;
}
Copier après la connexion

boolean containInstance(Collection collection, Object element)

À en juger par les commentaires dans le code source, il est utilisé pour déterminer si la collection contient un objet. Cette méthode n'est pas recommandée car elle présente le même problème que la méthode précédente. En regardant la 4ème ligne du code source, "==" est toujours utilisé.

public static boolean containsInstance(@Nullable Collection<?> collection, Object element) {
   if (collection != null) {
      for (Object candidate : collection) {
         if (candidate == element) {
            return true;
         }
      }
   }
   return false;
}
Copier après la connexion

boolean isEmpty(Collection collection)

Cette méthode a été vérifiée et peut être utilisée en toute confiance. Elle est utilisée pour déterminer si la liste/l'ensemble est vide ; déterminer si la carte est vide.

@Test
public void test1(){
    Collection<String> list=new ArrayList<>();
    boolean empty = CollectionUtils.isEmpty(list);
    Assert.isTrue(empty, "集合list不为空");
    System.out.println("集合list增加一元素");
    list.add("happy");
    boolean empty2 = CollectionUtils.isEmpty(list);
    Assert.isTrue(empty2, "集合list不为空");
}
Copier après la connexion

boolean containAny(Collection source, Collection candidates)

À partir des commentaires sur le code source, il est utilisé pour déterminer si la source de la collection contient un élément d'une autre collection candidate, c'est-à-dire si les éléments de la collection candidates sont entièrement inclus dans la source de collection.

À partir du code source, la comparaison entre les éléments de cette méthode utilise la méthode "equals", et la méthode equals de l'objet dans la collection est appelée. Par conséquent, le principe de l'utilisation de cette méthode pour obtenir le résultat correct est que le. les objets comparés doivent être importants. Écrivez les méthodes hashCode() et eauals().

@Test
public void test2(){
    Map<String,String> map = new HashMap<>();
    boolean empty = CollectionUtils.isEmpty(map);
    Assert.isTrue(empty, "map不为空");
    System.out.println("map中增加元素");
    map.put("name", "jack");
    boolean empty2 = CollectionUtils.isEmpty(map);
    Assert.isTrue(empty2, "map不为空");
}
Copier après la connexion

Opérations de collection

void mergeArrayIntoCollection (Tableau d'objets, collection de collections)

Ajoutez tous les éléments du tableau à List/Set.

@Test
public void test4(){
    Employee lisi = new Employee("lisi");
    Employee zhangsan = new Employee("zhangsan");
    Employee wangwu = new Employee("wangwu");
    List<Employee > list=new ArrayList<>();
    list.add(zhangsan);
    list.add(lisi);
    List<Employee> list2=new ArrayList<>();
    list2.add(wangwu);
    //这里可以用是因为比较的时候调用的是equals方法
    boolean b = CollectionUtils.containsAny(list, list2);
    Assert.isTrue(b, "list1没有包含有list2中任意一个元素");
}
Copier après la connexion

void mergePropertiesIntoMap (Properties props, Map map)

Ajoutez toutes les paires clé-valeur dans Propriétés à la carte.

@Test
public void test6(){
    List<Employee > list=new ArrayList<>();
    Employee lisi = new Employee("lisi");
    list.add(lisi);
    Employee zhangsan = new Employee("zhangsan");
    Employee[] employees={zhangsan};
    CollectionUtils.mergeArrayIntoCollection(employees, list);
    Assert.isTrue(list.size()==2, "把数据中的元素合并到list失败了");
}
Copier après la connexion

T lastElement(List list)

Renvoie le dernier élément de la liste.

@Test
public void test7(){
    Properties properties = new Properties();
    properties.setProperty("name", "zhangsan");
    Map<String,String > map = new HashMap<>();
    CollectionUtils.mergePropertiesIntoMap(properties, map);
    Assert.isTrue(map.get("name").equals("zhangsan"), "把properties中的元素合并到map中失败了");
}
@Test
public void test7(){
    Properties properties = new Properties();
    properties.setProperty("name", "zhangsan");
    Map<String,String > map = new HashMap<>();
    CollectionUtils.mergePropertiesIntoMap(properties, map);
    Assert.isTrue(map.get("name").equals("zhangsan"), "把properties中的元素合并到map中失败了");
}
Copier après la connexion

T firstElement(List list)

Renvoie le premier élément de la collection.

@Test
public void test9(){
    Employee lisi = new Employee("lisi");
    Employee zhangsan    = new Employee("zhangsan");
    List<Employee > list=new ArrayList<>();
    list.add(zhangsan);
    list.add(lisi);
    Employee employee = CollectionUtils.firstElement(list);
    Assert.isTrue(employee.equals(zhangsan), "获取集合第一个元素失败了");
 
}
Copier après la connexion

List arrayToList (Object source)

Convertissez un tableau en une collection.

@Test
public void test10(){
    Employee zhangsan    = new Employee("zhangsan");
    Employee[] employees={zhangsan};
    List list = CollectionUtils.arrayToList(employees);
    Assert.isTrue(list.size()==1, "把数据转换成集合失败了");
}
Copier après la connexion

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:yisu.com
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