资讯专栏INFORMATION COLUMN

集合框架的扩展 guava(Guava对JDK集合的扩展)

YorkChen / 1151人阅读

摘要:一,对集合设置只读对比查看初始化对只读设置安全可靠,并且相对简单二,过滤器,更好的与集合类解耦,查看集合中的回文单词,字符注意如果一个类只使用一次,并且这个类的对象也只是用一次,那么我们就是用匿名内部类工具过滤器函数式编程的静态初始化找出回

一,对集合设置只读

 List list 
            = new ArrayList();
       list.add("a");
       list.add("b");
       list.add("c");
       //对比查看初始化list grava 对只读设置安全可靠,并且相对简单
       List immutableList = ImmutableList.of("A","B","C");
       immutableList.add("c");
      System.out.println(immutableList);//java.lang.UnsupportedOperationException
    }

二,过滤器,更好的与集合类解耦
1,查看集合中的回文单词,字符
注意:
如果一个类只使用一次,并且这个类 的对象也只是用一次,那么我们就是用匿名内部类
工具:Collections2.filter 过滤器

函数式编程
//List的静态初始化 
     List list 
          = Lists.newArrayList("ab","bcb","cd","son","mom");
     //找出回文 mirror words
     //匿名内部类的对象:匿名内部类,同时创建类对象
     Collection parlidromeList = Collections2.filter(list, new Predicate(){
        @Override
        public boolean apply(String input) {
            //业务逻辑
            return new StringBuilder(input).reverse().toString().equals(input);
        }
     });
     for(String tem:parlidromeList){
         System.out.println(tem);
     }
    }

2,确保容器中字符串的长度不超过5,超过进行截取,并且全部大写

       //组合式函数编程
       //确保容器中字符串的长度不超过5,超过进行截取,并且全部大写
        List lists = Lists.newArrayList("good","happy","wonderful");
        //确保容器中字符串的长度不超过5,超过进行截取
        Function f1 
              = new Function(){
                @Override
                public String apply(String input) {
                    return input.length()>5?input.substring(0,5):input;
                }
        };
        //转成大写
        Function f2 
          = new Function(){
            @Override
            public String apply(String input) {
                return input.toUpperCase();
         }
    };
    //现在需要将f1和f2组合在一起 String combinedStr = f2(f1(String))
    Function f
           = Functions.compose(f1, f2);
    Collection resultCol 
           = Collections2.transform(lists, f);
    for(String tem:resultCol){
        System.out.println(tem);
    }        
}

3,添加约束条件(非空,长度验证)

 Set st = Sets.newHashSet();
      //创建约束
      Constraint constraint 
             = new Constraint(){

        @Override
        public String checkElement(String element) {
            //非空验证
            Preconditions.checkNotNull(element);
            //长度验证
            Preconditions.checkArgument(element.length()>=5 && element.length()<=20);
            return element;
        }
      };
      Set cs 
          = Constraints.constrainedSet(st, constraint);
      //cs.add("good");//java.lang.IllegalArgumentException
      //cs.add("");//java.lang.IllegalArgumentException
      //cs.add(null);//java.lang.NullPointerException
      cs.add("wonderful");//添加成功
      System.out.println(cs);
      
    }

4,集合的操作:交集,差集,并集

Set set1 = Sets.newHashSet(1,2,3,4,6);
    Set set2 = Sets.newHashSet(2,4,6,7);
    //交集
    System.out.println("交集为:");
    SetView intersections 
         = Sets.intersection(set1, set2);
    System.out.println(intersections);
    //差集
    System.out.println("差集为:");
    SetView diff 
        = Sets.difference(set1, set2);
    System.out.println(diff);
    //并集
    System.out.println("并集为:");
    SetView union 
        = Sets.union(set1, set2);
    System.out.println(union);
   }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64848.html

相关文章

  • Java基础-模块系统笔记(1)

    摘要:模块系统的前身是项目。最初,该项目仅仅是为设计实现一个模块系统。随着项目的不断深入,平台对标准模块系统的呼求也日益增长,批准该项目升级为平台的一部分,也能服务于和平台的需求。自定义的配置,仅包含一组指定的模块及其所需的模块。 我的博客 转载请注明原创出处。 序 从Java 9开始,在Java的世界里多了一个叫模块(JSR376)的特性。模块系统的前身是Jigsaw项目。最初,该项目仅...

    learning 评论0 收藏0
  • 集中式内存缓存 Guava Cache

    摘要:缓存总体可分为两种集中式缓存和分布式缓存集中式缓存与分布式缓存的区别其实就在于集中与非集中的概念,其对象可能是服务器内存条硬盘等。内存条版本缓存集中在一台服务器的一条内存条上,为集中式缓存。 背景 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日长开发有很多场合,有一些数据量不是很大,不会经常改动,并且访问非常频繁。但是由于受限于硬盘IO的性能或者远程...

    Dean 评论0 收藏0
  • 集中式内存缓存 Guava Cache

    摘要:缓存总体可分为两种集中式缓存和分布式缓存集中式缓存与分布式缓存的区别其实就在于集中与非集中的概念,其对象可能是服务器内存条硬盘等。内存条版本缓存集中在一台服务器的一条内存条上,为集中式缓存。 背景 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日长开发有很多场合,有一些数据量不是很大,不会经常改动,并且访问非常频繁。但是由于受限于硬盘IO的性能或者远程...

    KitorinZero 评论0 收藏0
  • 国外程序员整理Java资源大全

    摘要:日期和时间处理日期和时间的函数库。使用中可观察序列,创建异步基于事件应用程序的函数库。为分布式系统提供延迟和容错处理。发布使用本机格式分发应用程序的工具。将程序资源和打包成和的本机文件。图像处理用来帮助创建评估或操作图形的函数库。 好资源要分享原文 译者 唐尤华 翻译自 github akullpp 构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Mave...

    chengtao1633 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<