目录

1、只读设置

2、函数式编程+组合式编程

3、约束条件

4、集合操作(并集、差集、交集)

代码实现

1、只读设置

public static void main(String [] args){
//只读设置
List ls=new ArrayList();
ls.add("a");
ls.add("b");
ls.add("c");
//不使用guava的类库
List <String > readList= Collections.unmodifiableList(ls);
//readList.add("d"); 报错
//使用guava的类库
List<String> imutableList= ImmutableList.of("a","b","c");
//imutableList.add("a"); 运行报错
}

2、函数式编程

(1)函数一:找出集合众的回文字符串,回文又称 mirror word ,backword,是指字符串从前面或者后面读都是一样的,比如moom

//结果:moom   因为moon逆序以后还是moom
public static void main(String[] args) {
List<String> list = Lists.newArrayList("dog", "cat", "pig", "moom");
    Collection</span>&lt;String&gt; pList=Collections2.filter(list, <span style="color: #0000ff;">new</span> Predicate&lt;String&gt;<span style="color: #000000;">() {
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">boolean</span><span style="color: #000000;"> apply(String s) {
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder(s).reverse().toString().equals(s);
}
}); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 匿名内部类,同时创建对象,Collections2.filter类似过滤器</span>
<span style="color: #0000ff;">for</span><span style="color: #000000;">(Object o:pList){
System.out.println(o);
}
}</span></span></pre>

(2)函数二:日期转换

//结果:1970-01-01    1970-01-24   1970-01-02
 public static void main(String [] args){
Set<Long> timeSet= Sets.newHashSet();
timeSet.add(1000L);
timeSet.add(2000L*1000000);
timeSet.add(3000L*20000);
    Collection</span>&lt;String&gt; transList= Collections2.transform(timeSet, <span style="color: #0000ff;">new</span> Function&lt;Long, String&gt;<span style="color: #000000;">() {
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String apply(Long input) {
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> SimpleDateFormat("yyyy-MM-dd"<span style="color: #000000;">).format(input);
}
}); </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(String s:transList){
System.out.println(s);
}
}</span></span></pre>

(3)函数三:组合式编程

public static void main(String [] args){
List<String> list = Lists.newArrayList("happy", "sad", "wahaha");
//方法一
Function<String,String>f1=new Function<String, String>() {
public String apply(String s) {
return s.length()>5&&s.length()<20?s:"error";
}
};
//方法二:字母全部大写
Function<String, String> f2 = new Function<String, String>() {
public String apply(String input) {
return input.toUpperCase();
}
};
//组合方法
Function<String, String> f = Functions.compose(f1, f2);
Collection resultCol=Collections2.transform(list,f);
for(Object s:resultCol){
System.out.println(s);
}
}

3、约束条件

 public static void main(String[] args) {
Set<String> sets = Sets.newHashSet();
// 创建约束
Constraint<String> constraint = new Constraint<String>() {
        @Override
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String checkElement(String element) {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 非空验证</span>

Preconditions.checkNotNull(element);

            </span><span style="color: #008000;">//</span><span style="color: #008000;"> 长度限制 5-20,否则报错</span>

Preconditions.checkArgument(

element.length() >= 5 && element.length() <= 20,

element);

return element;

}

    };

    Set</span>&lt;String&gt; cs =<span style="color: #000000;"> Constraints.constrainedSet(sets, constraint);

    </span><span style="color: #008000;">//</span><span style="color: #008000;"> cs.add(null); 报错java.lang.NullPointerException
</span><span style="color: #008000;">//</span><span style="color: #008000;">cs.add("qaz"); 报错java.lang.IllegalArgumentException: qaz</span>
}</span></pre>

4、交集、并集、差集

 public static void main(String [] args){
Set<Integer> sets=Sets.newHashSet(1,2,3,4,5,6);
Set<Integer> set2=Sets.newHashSet(3,4,5,6,7,8,9);
    Sets.SetView</span>&lt;Integer&gt; intersection =<span style="color: #000000;">Sets.intersection(sets, set2);
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(Integer in:intersection){
System.out.print(in</span>+" "<span style="color: #000000;">);
}
System.out.println(</span>""<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">差集</span>
Sets.SetView&lt;Integer&gt; intersection2=<span style="color: #000000;">Sets.difference(sets,set2);
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(Integer in:intersection2){
System.out.print(in</span>+" "<span style="color: #000000;">);
}
System.out.println(</span>""<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">并集</span>
Sets.SetView&lt;Integer&gt; intersection3=<span style="color: #000000;">Sets.union(sets,set2);
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(Integer in:intersection3){
System.out.print(in</span>+" "<span style="color: #000000;">);
}
}</span></span></pre>

Java容器-引入Guava类库的更多相关文章

  1. Java——容器类库框架浅析

    前言 通常,我们总是在程序运行过程中才获得一些条件去创建对象,这些动态创建的对象就需要使用一些方式去保存.我们可以使用数组去存储,但是需要注意数组的尺寸一旦定义便不可修改,而我们并不知道程序在运行过程 ...

  2. 图解JAVA容器核心类库

    JAVA容器详解 类继承结构图 HashMap 1. 对象的HashCode是用来在散列存储结构中确定对象的存储地址的.   2. 如果两个对象的HashCode相同,即在数组中的地址相同.而数组的元 ...

  3. java容器(java编程思想第四版-读书笔记)

    容器类库图    List(interface) 次序是List最重要的特点:它保证维护元素特定的顺序.List为Collection添加了许多方法,使得能够向List中间插入与移除元素.(这只推荐L ...

  4. java容器---集合总结

    思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...

  5. [Java 缓存] Java Cache之 Guava Cache的简单应用.

    前言 今天第一次使用MarkDown的形式发博客. 准备记录一下自己对Guava Cache的认识及项目中的实际使用经验. 一: 什么是Guava Guava工程包含了若干被Google的 Java项 ...

  6. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  7. 【Java心得总结六】Java容器中——Collection

    在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...

  8. 【Java心得总结五】Java容器上——容器初探

    在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...

  9. Java 容器(list, set, map)

    java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...

随机推荐

  1. 64_p10

    python3-matplotlib-qt4-2.0.0-2.fc26.2.x86_64.rpm 05-Apr-2017 09:54 29438 python3-matplotlib-qt5-2.0. ...

  2. python3.x的HTMLTestRunner.py文件

    """A TestRunner for use with the Python unit testing framework. Itgenerates a HTML re ...

  3. AWS 使用总结

    A.升配置的流程: 1.新开一台配置较高的机器; 2.将新机器和老机器的磁盘都取消关联,注意需要记录下老机器的磁盘分区设备名,如:/dev/sda1: 3.将老机器的磁盘挂载到新机器上,磁盘分区设备名 ...

  4. Codeforces 776C - Molly's Chemicals(思维+前缀和)

    题目大意:给出n个数(a1.....an),和一个数k,问有多少个区间的和等于k的幂 (1 ≤ n ≤ 10^5, 1 ≤ |k| ≤ 10, - 10^9 ≤ ai ≤ 10^9) 解题思路:首先, ...

  5. 【重点】Jmeter----- 将 JDBC Request 查询结果作为下一个接口参数方法(二)

    一.说明 jmeter与数据库mysql已连接成功 二.需求 1.前置条件: 1.已user数据库的前8位手机号码作为行动计划的名称 2.行动计划的日期是2018-10-17 2.操作步骤: 1)获取 ...

  6. 【原创】Scrapyd 的 .net 客户端

    最近项目需要部署Scrapy爬虫,采用最简单的Scrapyd服务进行部署,基于.net core 进行了客户端的封装. 1)Scrapyd API文档:http://scrapyd.readthedo ...

  7. TestDirector其他

    一.查看连接TD的用户 1.用单击界面上的“Connections”按钮,进入如下图: 二.Licenses管理 1.单击“Licenses”按钮,显示如下图: 2.单击“Modify License ...

  8. 最新JAVA编程题全集(50题及答案)

    [程序1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?    //这是一个菲波拉契数列问题 pu ...

  9. MySQL几个特别语法示例

    简单介绍MySQL中几种特殊语法的用法: 1.创建示例用表和数据: 创建employees表[注:与SQL Server示例数据库Northwind中的表employees相同的表结构]: CREAT ...

  10. mysql打印输出转csv格式

    1. mysql打印输出放在input.csv中 2. 执行该文件 <?php $str = file_get_contents("./input.csv"); $str = ...