guava之ImmutableList三种初始化方式的使用实例
来源:互联网 发布:mac 中英文切换灯不亮 编辑:程序博客网 时间:2024/06/16 10:09
不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。
为什么要用immutable对象?immutable对象有以下的优点:
1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象2.线程安全的:immutable对象在多线程下安全,没有竞态条件
3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis)
4.可以被使用为一个常量,并且期望在未来也是保持不变的
immutable对象可以很自然地用作常量,因为它们天生就是不可变的对于immutable对象的运用来说,它是一个很好的防御编程(defensive programming)的技术实践。
Immutable集合使用方法:
一个immutable集合可以有以下几种方式来创建:1.用copyOf方法, 譬如, ImmutableSet.copyOf(set)
2.使用of方法,譬如,ImmutableSet.of("a", "b", "c")或者ImmutableMap.of("a", 1, "b", 2)
3.使用Builder类
以这个ImmutableList为例,来看看怎么初始化。
package com.lxk.guavaTest;import com.google.common.collect.ImmutableList;import java.util.List;/** * @author lxk on 2017/11/7 */public interface ConstantList { /** * 有时候,我们可能需要在代码里面使用一个包含许多常量的list * 不可变集合。。。 */ List<String> CONSTANT_LIST = new ImmutableList.Builder<String>() .add("平均值") .add("总值") .add("最大值") .add("最小值") .build(); /* * 推荐使用上面的写法,样式好看,且好维护,也就是说,你现在要删除或者添加一条,直接添加一行就好。常量整体也看着条理清晰。 */ //List<String> CONSTANT_LIST = ImmutableList.of("平均值","总值","最大值","最小值"); //List<String> CONSTANT_LIST = ImmutableList.copyOf(Lists.newArrayList("平均值","总值","最大值","最小值"));}
因为是当常量集合使用的,所以说,就得单独放在某个单独的文件里面。
package com.lxk.guavaTest;/** * guava ImmutableMap 测试实例 * * @author lxk on 2017/11/7 */public class ImmutableListTest { public static void main(String[] args) { String string = "最大值"; if (ConstantList.CONSTANT_LIST.contains(string)) { System.out.println("常量list集合包含此 String"); } //此常量list不能add,remove,不然会抛异常的。 //ConstantList.CONSTANT_LIST.add("sss"); //ConstantList.CONSTANT_LIST.remove(string); }}
其实,就是生成个常量的集合,这个常量 集合略显高级而已。。。具体高级的地方,在文章开头已经介绍过啦。
阅读全文
2 0
- guava之ImmutableList三种初始化方式的使用实例
- [guava]ImmutableList使用问题分析
- guava之ImmutableMap使用实例及好处
- Guava Objects类的使用方式【Guava学习笔记】
- Spring学习之实例化bean的三种方式
- Spring入门之实例化Bean的三种方式
- Android开发之LayoutInflater的三种实例化方式
- spring之bean的三种实例化方式
- WebApplicationContext初始化的三种方式
- java arrayList 初始化的三种方式
- C#初始化数组的三种方式
- 结构体的三种初始化方式
- C#初始化数组的三种方式
- Java数组的三种初始化方式
- Spring Bean 初始化的三种方式
- WebApplicationContext初始化的三种方式
- java学习之旅53--数组_数组的三种初始化方式
- 三、Guava的缓存
- 测试理论知识笔记
- 案例:使用BeautifuSoup4的爬虫
- win7系统玩lol弹出证书过期了怎么办
- HTML
- 字符串包含类问题
- guava之ImmutableList三种初始化方式的使用实例
- ARP协议以及攻击欺骗和防御
- python面试题(3)
- String的split方法
- [IP池]阿里云Ubuntu配置各种乱七八糟工具
- BBP算法板子
- 2016 China-Final Ice Cream Tower(二分)
- sql
- 【AI_数学知识】概率论