Guava学习笔记:Immutable(不可变)集合

  不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。

  为什么要用immutable对象?immutable对象有以下的优点:    1.对不可靠的客户代码库来说,它使用安全,美国服务器,可以在未受信任的类库中安全的使用这些对象    2.线程安全的:immutable对象在多线程下安全,没有竞态条件    3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis)    4.可以被使用为一个常量,并且期望在未来也是保持不变的

  immutable对象可以很自然地用作常量,因为它们天生就是不可变的对于immutable对象的运用来说,它是一个很好的防御编程(defensive programming)的技术实践。

  JDK中实现immutable集合

  在JDK中提供了Collections.unmodifiableXXX系列方法来实现不可变集合, 但是存在一些问题,下面我们先看一个具体实例:

import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import org.junit.Test;public class ImmutableTest {@Testpublic void testJDKImmutable(){List<String> list=new ArrayList<String>();list.add(“a”);list.add(“b”);list.add(“c”);System.out.println(list);List<String> unmodifiableList=Collections.unmodifiableList(list);System.out.println(unmodifiableList);List<String> unmodifiableList1=Collections.unmodifiableList(Arrays.asList(“a”,”b”,”c”));System.out.println(unmodifiableList1);String temp=unmodifiableList.get(1);System.out.println(“unmodifiableList [0]:”+temp);list.add(“baby”);System.out.println(“list add a item after list:”+list);System.out.println(“list add a item after unmodifiableList:”+unmodifiableList);unmodifiableList1.add(“bb”);System.out.println(“unmodifiableList add a item after list:”+unmodifiableList1);unmodifiableList.add(“cc”);System.out.println(“unmodifiableList add a item after list:”+unmodifiableList);}},网站空间,美国服务器得意时应善待他人,因为你失意时会需要他们

Guava学习笔记:Immutable(不可变)集合

相关文章:

你感兴趣的文章:

标签云: