每个Guava immutable集合类的实现都拒绝null值。我们做过对Google内部代码的全面的调查,并且发现只有5%的情况下集合类允许null值,而95%的情况下都拒绝null值。万一你真的需要能接受null值的集合类,你可以考虑用Collections.unmodifiableXXX。
Immutable集合使用方法:
一个immutable集合可以有以下几种方式来创建:
1.用copyOf方法, 譬如, ImmutableSet.copyOf(set)
2.使用of方法,譬如,ImmutableSet.of("a", "b", "c")或者ImmutableMap.of("a", 1, "b", 2)
3.使用Builder类
import java.awt.Color;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
/**
* 不可变集合
*
* @author Administrator 2009-11-4 23:30:44
*/
public class Test {
public static void main(String[] args) {
//不可变list
ImmutableList<String> list = ImmutableList.of("1","2","3","7","6","5");
System.out.println("【ImmutableList】:"+list);
ImmutableSortedSet<String> listSort = ImmutableSortedSet.copyOf(list);
System.out.println("【ImmutableSortedSet】:"+listSort);
//不可变Map
ImmutableMap<String, Integer> imap = ImmutableMap.of
("1", 1,"2", 2,"3", 4);
System.out.println("【ImmutableMap】:"+imap);
ImmutableSet<String> iset = ImmutableSet.of("a","b","c");
System.out.println("【ImmutableSet】:"+iset);
ImmutableSet<Color> imColorSet =
ImmutableSet.<Color>builder()
.add(new Color(0, 255, 255))
.add(new Color(0, 191, 255))
.build();
System.out.println("【imColorSet】:"+imColorSet);
//可变map变不可变map
ImmutableMap.Builder<String, Color> ibmap = new ImmutableMap.Builder<String, Color>();
for(int i=0;i<3;i++){
ibmap.put(""+i+"", new Color(0,111,123));
}
ImmutableMap<String,Color> imaps = ibmap.build();
System.out.println("【ImmutableMap】:"+imaps);
//Lists帮助类创建list集合
List<String> list_1 = Lists.newArrayList("4","5","6");
System.out.println("【Lists】:"+list_1);
//Maps帮助类创建map集合
Map<String,Integer> map = Maps.newHashMap();
map.put("1", 1);
map.put("2", 2);
System.out.println("【Maps】:"+map);
//Sets帮助类创建set集合
Set<String> set = Sets.newHashSet();
set.add("1");
set.add("1");
set.add("2");
set.add("3");
System.out.println("【Sets】:"+set);
}
}
相关推荐
Immutable 是 Facebook 开发的不可变数据集合。不可变数据一旦创建就不能被修改,是的应用开发更简单,允许使用函数式编程技术,比如惰性评估。Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map...
kotlinx.collections.immutable, Kotlin的不可变集合 Prototype Kotlin的不可变集合库 Kotlin的不可变集合接口和实现 Prototype 。有关详细信息,请参阅建议列表。Prototype实现基于 pcollections ( 版权 2015的作者...
immutable - Javascript不可变的持久化数据集合
Kotlin的不可变集合接口和实现原型。
序列化和恢复不可变集合。 快速开始 import conv from 'immutable-conv' import { is , List , Map } from 'immutable' let lst = List ( [ 3 , 14 , 15 ] ) , serialized = conv . serialize ( lst ) serialized...
通过要求对Immutable进行编辑,不可变集合可以提供高效,无锁的数据共享。此存储库包含Go的不可变集合类型。 它包括List,Map和SortedMap实现。 通过要求对集合的编辑返回新的集合,不可变的集合可以提供有效的,...
不可变视图-其他集合对象的不可变视图概述immutable-views包提供的集合类是其他(可变)集合对象上的不可变视图: 另一个映射对象的不可变视图。 在另一个列表(序列)对象上的变视图。 在另一个set对象上的变视图。...
Immutable(不可变)集合 是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。
ImmutableCollections-基于数组的Java不可变集合 版权所有(c)2017 Nicholas Cull 有关许可信息,请参阅LICENSE.txt。 Java 1.8的基于数组的不可变集合 排序和未排序的变体 风格类似于番石榴收集包装 空友好 Java 8...
不可变模型由 Immutable.js 支持的不可变模型和集合抽象
kotlinx.collections.immutable:Kotlin的不可变持久集合
不可变的角度 支持在 Angular 1.x 中查看和枚举集合 入门 使用 npm 或 jspm 安装immutable-angular npm install immutable-angular jspm install npm:immutable-angular 包含'immutable'模块作为模块的依赖项 ...
一个好的做法是不要将不可变数据集合与可变对象混合在一起,因为这会导致混淆。 不可变对象不被默认语义访问,而是由 setter 和 getter 实现。 这个库实现了 3 个辅助函数: get(object, path) -- > valueset...
基于哈希的,不可变的PureScript集合类型。 在合理的情况下,两个主要目标是良好的性能以及与基于Ord的集合的API兼容性。 HashMap的实现基于“针对快速且精益的不可变JVM集合优化哈希数组映射尝试”(Steindorfer和...
快速不可变集合 这个包裹是由我和我带给你的。 下面的文档非常详细。 如需概览,请访问我的 . 您也可以检查。 1.1. 介绍 这个包,简称FIC ,提供: IList ,一个不可变的列表 ISet ,一个不可变的集合 IMap ,一个不...
不可变-json 将 JSON 解析为 immutable.js 集合 IJSON.parse是解析器的集合,每个解析器都以不同的方式解释 JSON 数组和对象: IJSON.parse.ListMap - 将 JSON 数组视为不可变列表,将对象视为地图。 IJSON.parse...
Java的不可变集合 概述 Java库的不可变集合(JImmutable Collections)是一组高性能的不可变集合,用于替换或补充标准的java.util集合。 为每个最常用的集合提供功能替换: Java类 JImmutable接口 工厂方法 数组...
快速掌握集合,Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质 在Scala中集合有可变(mutable)和不可变(immutable)两种类型
尽管集合是不可变的,但它们提供了通过创建自身的新修改副本来添加和删除值的方法。 每个副本与其他副本尽可能共享其结构,以最大程度地减少内存消耗。 该库包括单链接(cons / cddr样式)列表/堆栈,基于整数trie...