每个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...
在Kotlin编程语言中,`kotlinx.collections.immutable`是一个重要的库,它提供了不可变集合的实现。不可变集合是一旦创建后就不能修改的集合,这种数据结构在多线程环境、函数式编程和构建安全的数据模型时非常有用...
`immutable.js`库为Node.js开发带来了不可变数据集合的便利,通过引入不可变性和持久化数据,提高了代码的稳定性和性能。结合函数式编程的理念,它为处理复杂状态和并发场景提供了一种强大而优雅的解决方案。在实际...
kotlinx.collections.immutable, Kotlin的不可变集合 Prototype Kotlin的不可变集合库 Kotlin的不可变集合接口和实现 Prototype 。有关详细信息,请参阅建议列表。Prototype实现基于 pcollections ( 版权 2015的作者...
序列化和恢复不可变集合。 快速开始 import conv from 'immutable-conv' import { is , List , Map } from 'immutable' let lst = List ( [ 3 , 14 , 15 ] ) , serialized = conv . serialize ( lst ) serialized...
`ImmutableCollection`是所有不可变集合的父接口,它提供了基础的不可变集合操作。`ImmutableList`、`ImmutableSet`和`ImmutableMap`则分别代表了不可变的列表、集合和映射,它们继承自`ImmutableCollection`,并...
首先,标题中提到的“guava不可修改集合”指的是Guava库中的一类集合,它们被设计为不可变。在计算机科学中,“Immutable(不可变)”意味着一个对象一旦创建,其内部状态就不能被修改。对于集合来说,这就意味着...
在Kotlin编程中,`kotlinx.collections.immutable`库提供了对不可变和持久性集合的支持。这个库是Kotlin生态系统的一部分,旨在帮助开发者构建更安全、更易于维护的代码,尤其是在多线程环境中。不可变集合是那些...
通过要求对Immutable进行编辑,不可变集合可以提供高效,无锁的数据共享。此存储库包含Go的不可变集合类型。 它包括List,Map和SortedMap实现。 通过要求对集合的编辑返回新的集合,不可变的集合可以提供有效的,...
不可变视图-其他集合对象的不可变视图概述immutable-views包提供的集合类是其他(可变)集合对象上的不可变视图: 另一个映射对象的不可变视图。 在另一个列表(序列)对象上的变视图。 在另一个set对象上的变视图。...
ImmutableCollections-基于数组的Java不可变集合 版权所有(c)2017 Nicholas Cull 有关许可信息,请参阅LICENSE.txt。 Java 1.8的基于数组的不可变集合 排序和未排序的变体 风格类似于番石榴收集包装 空友好 Java 8...
而不可变类型(Immutable types),指的是对象的内容一旦创建后就不能被改变,如果要修改,Python会重新在内存中创建一个新的对象来存储新的值,原对象保持不变。不可变类型包括整数(int)、浮点数(float)、字符...
- **不可变集合**:默认导入的包`scala.collection.immutable`中包含了所有不可变集合的实现。 - **可变集合**:要使用可变集合,需要导入包`scala.collection.mutable`。 接下来,我们将详细探讨这三种核心集合...
在JavaScript的世界里,`Immutable`概念的引入是为了创建不可变数据结构,这在处理复杂数据时能带来很多好处,如避免意外修改、提高代码可预测性以及优化性能。`ImmutableArray`是实现这一概念的一个库,它扩展了...
4. **不可变集合**:使用`System.Collections.Immutable`库提供的不可变集合,如`ImmutableArray<T>`、`ImmutableDictionary, TValue>`等。 在实际应用中,不可变对象可以带来以下好处: - **线程安全**:不可变...
Immutables是一个强大的Java库,专门用于创建不可变对象,并且提供了一个注解处理器来简化这一过程。在软件开发中,不可变对象是那些一旦创建就不能改变其状态的对象,这有助于提升程序的安全性、可预测性和并发性能...
`Immutable.js`是一个流行的JavaScript库,它提供了丰富的不可变数据结构,如列表、映射、集合等,以及一系列高效的操作方法,以支持这一编程范式。 `Immutable.js`的核心概念: 1. **不可变性**:一旦创建,数据...