当前位置: 首页 > news >正文

网站建设一般多少钱新闻seo外链技巧

网站建设一般多少钱新闻,seo外链技巧,wordpress 全屏模板,北京做的好的seo公司什么是不可变集合 不可变集合,英文叫 immutable 顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。 为什么要使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的…

什么是不可变集合

不可变集合,英文叫 immutable

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

为什么要使用不可变集合

不可变对象有很多优点,包括:

  • 当对象被不可信的库调用时,不可变形式是安全的
  • 不可变对象被多个线程调用时,不存在竞态条件问题
  • 不可变集合不需要考虑变化,因此可以节省时间和空间。所有不可变的集合都比它们的可变形式有更好的内存利用率(分析和测试细节)
  • 不可变对象因为有固定不变,可以作为常量来安全使用

创建对象的不可变拷贝是一项很好的防御性编程技巧。Guava为所有JDK标准集合类型和Guava新集合类型都提供了简单易用的不可变版本。

Java 9 版本以前, Collections提供了一组方法把可变集合封装成不可变集合,假如要创建一个包含 几个元素的 Set 集合,程序需要先创建 Set 集合,然后调用 几次 add() 方法向 Set 集合中添加元素。例如:

List<String> list = new ArrayList<String>();list.add("a");list.add("b");list.add("c");List<String> unmodifiableList = Collections.unmodifiableList(list);list.add("d");System.out.println(unmodifiableList);

输出的结果: [a,b,c,d] 

得出结论:Collections.unmodifiableList 实现的不是真正的不可变集合,当原始集合修改后,不可变集合也发生变化。

  • 笨重而且累赘:不能舒适地用在所有想做防御性拷贝的场景;
  • 不安全:要保证没人通过原集合的引用进行修改,返回的集合才是事实上不可变的;
  • 低效:包装过的集合仍然保有可变集合的开销,比如并发修改的检查、散列表的额外空间,等等。

如果你没有修改某个集合的需求,或者希望某个集合保持不变时,把它防御性地拷贝到不可变集合是个很好的实践。

但是Java 9 出了些新的生成不可变集合的方法,程序直接调用 Set、List、Map 的 of() 方法即可创建包含 N 个元素的不可变集合,这样一行代码就可创建包含 N 个元素的集合。

不可变意味着程序不能向集合中添加元素,也不能从集合中删除元素。

如下程序示范了如何创建不可变集合。

public class Java9Collection {
public static void main(String[] args) {
// 创建包含4个元素的Set集合
Set set = Set.of("Java", "Kotlin", "Go", "Swift");
System.out.println(set);
// 不可变集合,下面代码导致运行时错误
// set.add("Ruby");
// 创建包含4个元素的List集合List list = List.of(34, -25, 67, 231);
System.out.println(list);
// 不可变集合,下面代码导致运行时错误
// list.remove(1);
// 创建包含3个key-value对的Map集合Map map = Map.of("语文", 89, "数学", 82, "英语", 92);
System.out.println(map);
// 不可变集合,下面代码导致运行时错误
// map.remove("语文");
// 使用Map.entry()方法显式构建key-value对Map map2 = Map.ofEntries(Map.entry("语文", 89), Map.entry("数学", 82), Map.entry("英语", 92));
System.out.println(map2);}
}

从上面代码可以看出 Set、List 比较简单,程序只要为它们的 of() 方法传入 N 个集合元素即可创建 Set、List 集合。

创建不可变的 Map 集合有两个方法。使用 of() 方法时只要依次传入多个 key-value 对即可;还可使用 ofEntries() 方法,该方法可接受多个 Entry 对象,因此程序显式使用 Map.entry() 方法来创建 Map.Entry 对象。 

http://www.yayakq.cn/news/299901/

相关文章:

  • 网站怎么添加流量网站做淘宝客赚钱吗
  • 哪里网站用vue.js做的网站手机开
  • 网站服务器怎么查询农村电商平台怎么加入
  • 网站设计联系方式网站建设优劣的评价标准
  • 宁波网站设计企业友情链接怎么连
  • 重庆选科网站做视频网站适合用什么服务器
  • 做线上网站的风险分析外包网接单
  • 北京网站建设一条龙app开发制作哪种快
  • WordPress首页站内搜索北京高端定制网站建设
  • html淘宝店铺网站模板京东云擎 wordpress
  • 有做盆景的网站wordpress 下一页 模板
  • 运用.net做网站网站备案 登录名
  • 做网站租服务器多少钱做网站筹钱需要多少钱
  • 内部网站建设app网站备案成功后怎么建设
  • 商城网站定制建设价位英语培训学校网站建设多少钱
  • 网站设计息设计企业网站步骤
  • 爱有声小说网站捡个校花做老婆wordpress导出导入
  • 在职考研哪个网站做的好ai网页生成
  • 哪些网站是专做合租的什么网站可以免费做视频软件
  • 有哪些网站代做包装毕设南宁网站建设技术精粹
  • 高校邦营销型网站建设答案微网站建设市场
  • wordpass建设网站流程wordpress 如何修改域名
  • 网站群 建设 方案wordpress 男科医院主题
  • 网站模板 阿里app首页设计模板
  • 网站开发软件启动搜索引擎关键词优化技巧
  • 网站后台软件可以自己做吗手机网站开发看什么书
  • 建设部网站水利造价师贵阳市做网站的公司有哪些
  • thinkphp 网站下载wordpress 绑定二级域名
  • access做调查表网站wordpress h1 h2
  • 餐饮行业网站建设风格聊城网站建设:推广聊城博达