Guava之項目集合操作使用

1.Maps.uniqueIndex(Iterable, Function)

 // nickname屬性能唯一確定一個WebUser
        ArrayList<WebUser> users = Lists.newArrayList(new WebUser(1,"one"),new WebUser(2,"two"),new WebUser(1,"three"),new WebUser(1,"four"));
// 得到以nickname爲key,WebUser爲值的一個map
        ImmutableMap<String, WebUser> map = Maps.uniqueIndex(users,new com.google.common.base.Function<WebUser, String>() {
            @Override
            public String apply(WebUser user) {
                return user.getNickname();
            }
        });

進一步簡化:

ImmutableMap<String, WebUser> map = Maps.uniqueIndex(users,WebUser::getNickname);

總結,該方法只適用於key是唯一的,如果key不唯一,會報java.lang.IllegalArgumentException異常,可適用於校驗key的唯一性,如果索引值不是獨一無二的,可以使用Multimaps.index,會被覆蓋;

2.Maps.difference

    //兩個map比較  
    Map<String, Integer> left = ImmutableMap.of("a", 1, "b", 2, "c", 3, "d", 4);  
    Map<String, Integer> right = ImmutableMap.of("c", 30, "d", 4, "e", 5, "f", 6);  
    MapDifference<String, Integer> diff = Maps.difference(left, right);  
      
    System.out.println(diff.entriesDiffering()); //返回鍵相同而值不同的兩邊的值  {c=(3, 30)}  
    System.out.println(diff.entriesInCommon()); //交集:鍵值都匹配  {d=4}  
    System.out.println(diff.entriesOnlyOnLeft()); //返回只存在於左邊Map的項,匹配key  {a=1, b=2}  
    System.out.println(diff.entriesOnlyOnRight()); //返回只存在於右邊Map的項,匹配key  {e=5, f=6}  
    System.out.println(diff.areEqual()); //兩個map是否相等  false  

3.Collections2集合(filter根據條件過濾,transform,直接轉換)

private static void collections2() {  
    //集合數據過濾:apply方法等於true時返回  
    ImmutableList<String> list = ImmutableList.of("A", "B", "BC", "D", "AE");  
    Collection<String> collection1 = Collections2.filter(list, new Predicate<String>() {  
        public boolean apply(String input) {  
            return input.indexOf("A") >= 0;  
        };  
    });  
    System.out.println(collection1); //[A, AE]  
      
    //集合數據轉換:    
    Collection<String> collection2 = Collections2.transform(list, new Function<String, String>() {  
        @Override  
        public String apply(String input) {  
            return input.toLowerCase();  
        }  
    });  
    System.out.println(collection2); //[a, b, bc, d, ae]  

 
}  

4.java8 list轉map

實例1:返回Map<String,String>,可以爲空,不會重複;

return dictionaryVos.stream().collect(Collectors.toMap(DictionaryVo::getParamName, DictionaryVo::getParamCode,

(oldValue,newValue) -> oldValue));


Map<String, AItem> map = items.stream().collect(Collectors.toMap(item -> item.getGoodsNo(), item -> item));

 5.空的校驗

Preconditions.checkArgument(StringUtils.isNotBlank(message),"序號爲"+orderNo+"的名稱填寫不正確");
拋出IllegalArgumentException異常

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章