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

c 网站开发 环境配置网络推广公司怎么报税

c 网站开发 环境配置,网络推广公司怎么报税,全网营销推广是什么,网站建设立项申请报告什么是不可变集合 不可变集合,英文叫 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/709489/

相关文章:

  • 福州有网站开发的公司吗黑马程序员培训机构
  • 怎么在自己的网站上做链接wordpress视频多集播放
  • 青岛网站产品图片设计海口网站建设哪家专业
  • 厦门建设网站企业做网站多少钱
  • 建设手机网站的方案安装wordpress安装地址
  • 淘宝网站建设方式长春专业网站建设模板代理
  • 网站怎么管理恒基建设集团网站地址
  • 可以做用户画像的网站济南做网站的
  • 天津网站设计网络营销课程培训
  • 做外贸如何选择网站优化设计电子课本
  • 网站设置301重定向昆明建站网址
  • 公司网站 自己是空间服务商 cms门店管理系统app
  • 青浦门户网站福田欧曼est
  • 网页建站网站台州关键词优化报价
  • php图书管理系统网站开发wordpress多主题插件下载地址
  • 设计师经常上的网站中文网站后台
  • it软件网站建设传统营销渠道有哪些
  • 地方门户网站规划php网站源码大全
  • 昆明网站建设_云南网站建设电商网站排名
  • 阿坝县建设局网站大同住房与城乡建设厅网站
  • 做本地生活网站免费做头像网站有哪些
  • 如何做正版小说网站263企业邮箱自动回复
  • 自己做的网站怎么挣钱建设集团有限公司简介
  • 自己做的网站本地虚拟上传怎样加盟网站建设
  • 莱芜网络小说作家邢台网络优化技术公司
  • 做个一般的网站要多少钱怎么弄公司网站
  • 做网站需要执照吗淘宝店铺推广方式有哪些
  • 嘉定北京网站建设车上seo是什么意思
  • 网站建设用电脑备案域名查询
  • 163手机移动网站大地影院免费观看大全