ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:17.61KB ,
资源ID:15383941      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15383941.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Guava学习笔记Immutable不可变集合Word文件下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Guava学习笔记Immutable不可变集合Word文件下载.docx

1、在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 Test public void testJDKImmutable() List list=new ArrayList(); list.add(a);bc

2、System.out.println(list); List unmodifiableList=Collections.unmodifiableList(list); System.out.println(unmodifiableList); List unmodifiableList1=Collections.unmodifiableList(Arrays.asList(,); System.out.println(unmodifiableList1); String temp=unmodifiableList.get(1); System.out.println(unmodifiableL

3、ist 0:+temp);babylist add a item after list:+list);list add a item after unmodifiableList:+unmodifiableList); unmodifiableList1.add(bbunmodifiableList add a item after list:+unmodifiableList1); unmodifiableList.add(cc 输出:a, b, cba, b, c, babylist add a item after unmodifiableList1:说明:Collections.unm

4、odifiableList实现的不是真正的不可变集合,当原始集合修改后,不可变集合也发生变化。不可变集合不可以修改集合数据,当强制修改时会报错,实例中的最后两个add会直接抛出不可修改的错误。总结一下JDK的Collections.unmodifiableXXX方法实现不可变集合的一些问题:1.它用起来笨拙繁琐你不得不在每个防御性编程拷贝的地方用这个方法2.它不安全:如果有对象reference原始的被封装的集合类,这些方法返回的集合也就不是正真的不可改变。3.效率低:因为它返回的数据结构本质仍旧是原来的集合类,所以它的操作开销,包括并发下修改检查,hash table里的额外数据空间都和原来

5、的集合是一样的。Guava的immutable集合Guava提供了对JDK里标准集合类里的immutable版本的简单方便的实现,以及Guava自己的一些专门集合类的immutable实现。当你不希望修改一个集合类,或者想做一个常量集合类的时候,使用immutable集合类就是一个最佳的编程实践。注意:每个Guavaimmutable集合类的实现都拒绝null值。我们做过对Google内部代码的全面的调查,并且发现只有5%的情况下集合类允许null值,而95%的情况下都拒绝null值。万一你真的需要能接受null值的集合类,你可以考虑用Collections.unmodifiableXXX。I

6、mmutable集合使用方法:一个immutable集合可以有以下几种方式来创建:1.用copyOf方法, 譬如, ImmutableSet.copyOf(set)2.使用of方法,譬如,ImmutableSet.of(, )或者ImmutableMap.of(, 1, , 2)3.使用Builder类实例:Test public void testGuavaImmutable()list: ImmutableList imlist=ImmutableList.copyOf(list);imlist:+imlist); ImmutableList imOflist=ImmutableList.

7、of(peidajerryharryimOflist:+imOflist); ImmutableSortedSet imSortList=ImmutableSortedSet.of(dimSortList:+imSortList);list add a item after imlist: ImmutableSet imColorSet = ImmutableSet.builder() .add(new Color(0, 255, 255) .add(new Color(0, 191, 255) .build();imColorSet:+imColorSet);peida, jerry, ha

8、rrya, b, c, djava.awt.Colorr=0,g=255,b=255, java.awt.Colorr=0,g=191,b=255对于排序的集合来说有例外,因为元素的顺序在构建集合的时候就被固定下来了。譬如,ImmutableSet.of(),对于这个集合的遍历顺序来说就是。更智能的copyOfcopyOf方法比你想象的要智能,ImmutableXXX.copyOf会在合适的情况下避免拷贝元素的操作先忽略具体的细节,但是它的实现一般都是很“智能”的。譬如: public void testCotyOf() ImmutableSet imSet=ImmutableSet.of(l

9、isaimSet:+imSet); ImmutableList imlist=ImmutableList.copyOf(imSet); ImmutableSortedSet imSortSet=ImmutableSortedSet.copyOf(imSet);imSortSet:+imSortSet); for(int i=0;i) list.add(i+x ImmutableList imInfolist=ImmutableList.copyOf(list.subList(2, 18);imInfolist:+imInfolist); int imInfolistSize=imInfolis

10、t.size();imInfolistSize:+imInfolistSize); ImmutableSet imInfoSet=ImmutableSet.copyOf(imInfolist.subList(2, imInfolistSize-3);imInfoSet:+imInfoSet);peida, jerry, harry, lisaharry, jerry, lisa, peida0x, 1x, 2x, 3x, 4x, 5x, 6x, 7x, 8x, 9x, 10x, 11x, 12x, 13x, 14x, 15x, 16x, 17x, 18x, 19x2x, 3x, 4x, 5x, 6x, 7x, 8x, 9x, 10x, 11x, 12x, 13x

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1