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

网站开发后端用什么技术上海网络推广优化公司

网站开发后端用什么技术,上海网络推广优化公司,招聘网站建设的项目描述,小笨鸟跨境电商平台什么是不可变集合 不可变集合,英文叫 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.dt0577.cn/news/34585.html

相关文章:

  • 丑陋网站设计赏析企业建站免费模板
  • 诚信通旺铺网站建设建网站教程
  • 莱芜信息港莱芜在线seo工资
  • 免费商用自媒体图片网站seo资料站
  • 做服装外单的网站有哪些内容常用搜索引擎有哪些
  • 邢台做网站名列前茅网络营销方法有哪些举例
  • 网上兼职做网站百度推广怎么优化关键词的质量
  • 做qq群头像网站百度网站链接
  • 江门网红打卡点seo关键词挖掘工具
  • dw网站模板下载十大网络推广公司
  • 怎么做网站排名优化谷歌搜索引擎入口手机版
  • 用php做的企业网站作业专业seo网络推广
  • 池州有哪些做网站的google搜索引擎入口google
  • 微信自助下单小程序百度seo网站优化服务
  • 电子商务网站制作步骤今日头条号官网
  • 做的最好的相亲网站nba最新交易信息
  • dede模板分为 网站建设好吗网页设计费用报价
  • 株洲网站排名优化网推是什么
  • surface go 网站开发搜索优化整站优化
  • 专门做美食的网站6郑州seo优化外包顾问
  • 怎么做淘宝网站赚钱搜索引擎在线观看
  • java网站开发视频下载百度官网电话
  • 网站三大标签优化北京百度公司地址在哪里
  • Dw做网站怎么加logo衡阳网站优化公司
  • 提供网站建设公司电话湖南有实力seo优化
  • 公司网站的关键词推广怎么做兰州网络推广
  • 泉州企业网站建设网络运营是什么专业
  • 企业建设网站方案设计百度推广效果怎样
  • 做自己的首席安全官的网站动态网站设计
  • 网站开发包括网站的等过程网站服务费一年多少钱