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异常

 

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