中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Springboot內置的工具類CollectionUtils怎么使用

發布時間:2022-12-17 09:28:31 來源:億速云 閱讀:149 作者:iii 欄目:開發技術

這篇“Springboot內置的工具類CollectionUtils怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Springboot內置的工具類CollectionUtils怎么使用”文章吧。

org.springframework.util.CollectionUtils

集合的判斷

boolean hasUniqueObject(Collection collection)

從源碼注釋上看,是用于判斷 List/Set 中的每個元素是否唯一,即 List/Set 中不存在重復元素。但這里要告訴大家千萬不要用這個方法,因為這個方法有bug,為什么呢?下面是Spring-core-5.2.13.RELEASE.jar中的源碼,且看12行,細心的人會發現兩個對象之間比較是否相等用的是!=。還記得“==”和“equals”的區別嗎?“==”操作符專門用來比較兩個變量的值是否相等,equals()方法是用于比較兩個獨立對象的內容是否相同。所以這里如果集合中的元素是數值,可以用“==”比較,如果是普通的引用對象,就得不到正確的結果了。

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

boolean containsInstance(Collection collection, Object element)

從源碼的注釋上看,是用于判斷集合中是否包含某個對象。這個方法也不建議使用,因為與上一個方法存在相同的問題,且看源碼的第4行,依然用的是“==”。

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

boolean isEmpty(Collection collection)

這個方法已驗證過可以放心用,用于判斷 List/Set 是否為空;

@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不為空");
}

boolean isEmpty(Map map)

用于判斷 Map 是否為空。

@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不為空");
}

boolean containsAny(Collection source, Collection candidates)

從源碼上的注釋看,是用于判斷集合source中是否包含另一個集合candidates的任意一個元素,即集合candidates中的元素是否完全包含于集合soruce。

從源碼這個方法中的元素之間的比較用到了“equals”方法,且調用的是集合內對象的equals方法,因此使用這個方法想要得到正確的結果的前提是,比較的對象要重寫hashCode()和eauals()方法。

@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中任意一個元素");
}

集合的操作

void mergeArrayIntoCollection(Object array, Collection collection)

將數組array中的元素都添加到 List/Set 中。

@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失敗了");
}

void mergePropertiesIntoMap(Properties props, Map map)

將 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中失敗了");
}
@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中失敗了");
}

T lastElement(List list)

返回 List 中最后一個元素。

@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), "獲取集合第一個元素失敗了");
 
}

T firstElement(List list)

返回集合中第一個元素。

@Test
public void test10(){
    Employee zhangsan    = new Employee("zhangsan");
    Employee[] employees={zhangsan};
    List list = CollectionUtils.arrayToList(employees);
    Assert.isTrue(list.size()==1, "把數據轉換成集合失敗了");
}

List arrayToList(Object source)

把一個數組轉換成一個集合。

@Test
public void test10(){
    Employee zhangsan    = new Employee("zhangsan");
    Employee[] employees={zhangsan};
    List list = CollectionUtils.arrayToList(employees);
    Assert.isTrue(list.size()==1, "把數據轉換成集合失敗了");
}

以上就是關于“Springboot內置的工具類CollectionUtils怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵德县| 湄潭县| 靖江市| 西城区| 乾安县| 景德镇市| 原平市| 河源市| 永修县| 克什克腾旗| 天津市| 长宁县| 厦门市| 凤凰县| 会泽县| 娱乐| 旌德县| 平邑县| 怀化市| 琼结县| 延边| 芮城县| 富蕴县| 盐池县| 甘泉县| 萨嘎县| 沙洋县| 湖南省| 孟津县| 正定县| 通渭县| 沅江市| 新巴尔虎右旗| 青田县| 武强县| 汶川县| 宜春市| 革吉县| 龙游县| 泸西县| 吉林省|