当前位置: 首页 > 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.yayakq.cn/news/921354/

相关文章:

  • c 网站开发调试婚礼案例网站
  • 如何给自己的公司建网站网站模板 金融
  • 网站备案是备什么鸿兴网站建设公司
  • 建站之星凡客网站开发项目有哪些
  • 茶叶价格网站建设江门网站设计
  • 注册公司去哪里注册东莞关键词排名优化
  • 网站开发 演讲怎么样申请网站域名
  • 网站备案logo做网站要的带宽是什么
  • 公司营销型网站建设策划书岭南地区网站建设
  • 坪山住房和建设局网站凡科建站好用吗
  • 网站敏感词汇广州网络公司排名
  • 个人做网站郊游的英临沭有做网站的吗
  • 企业网站开发外包余干县建设局网站
  • 国外网站 国内访问速度泉州网站建设学徒招聘
  • 网站调用视频公司门户网站制作需要多少钱
  • 做网站需要交钱吗网站备案前置审批 成都
  • 昌做网站济宁有做企业网站吗
  • 蔚县网站建设招远网站
  • 山东企业网站建设域名一个注册要多久
  • 手机网站 免费 html硬件开发工具
  • 网站广东省备案系统做网站用到的单词
  • 爱站工具下载网址信息查询
  • 新网站seo优化网站 谁建设谁负责
  • 网站建设刂搜金手指下拉贰肆网站开发 如何备案
  • 论坛建站哪个比较好拼多多网页设计尺寸
  • 宁波网站建设熊掌号北京网站制作收费明细
  • 石嘴山市建设局网站小企业网站建设论文
  • 如何更快的让百度收录网站成都商铺装修设计公司
  • 婚恋网站 备案条件如何制作app软件下载
  • 做亚马逊网站费用吗wordpress 菜单 链接地址