Java 9 JShell示例:集合静态工厂方法

这篇文章继续了My My Java 9 Features博客文章中对Java9功能的探索。 在这里,我们在List,Set和Map接口中试验Java9 Collections静态工厂方法。

集合静态工厂方法

Java9使用其新的静态工厂方法使创建不可变列表更加容易

有12种Set.of和List.of方法–

  • List.of()或Set.of()
  • List.of(E e1)或Set.of(E e1)至E e10
  • List.of(E…元素)或Set.of(E…元素)

例子

jshell> Set.of()
$1 ==> []
| created scratch variable $1 : Set<Object>

注意将推理作为List对象

要静态

清单

(E e1,E e2,E e3)的–

jshell> List.of("one","two","three")
$2 ==> [one, two, three]
| created scratch variable $2 : List<String>

将推理记录为列表

宾语

参数的数量一直增加到E e10,此时我们可以使用vararg –

静态的

清单

(E ...个元素)

同样,地图定义–

  • staticMapof()
  • staticMapof(K k1,V v1)到(K k10,V v10)
  • staticMapofEntries(Map.Entry
    …条目)–注意使用
    地图条目

例子

jshell> Map.of()
$12 ==> {}jshell> Map.of("key1", "value1", "key2", "value2")
$13 ==> {key1=value1, key2=value2}
| created scratch variable $13 : Map<String,String>

集合静态工厂方法的特征

这些静态工厂方法列表,集合和映射的共同特征是–

  • 从结构上讲是不可变的-尽管元素本身是不可变的,但抛出UnsupportedOperationException
jshell> Set<String> immutableSet = Set.of("one","two","three")
immutableSet ==> [three, two, one]
| created variable immutableSet : Set<String>jshell> immutableSet.add("four")
| java.lang.UnsupportedOperationException thrown:
  • 没有空-抛出NullPointerException
jshell> List<Object> notNullList = List.of(null)
| Warning:
| non-varargs call of varargs method with inexact argument type for last parameter;
| cast to java.lang.Object for a varargs call
| cast to java.lang.Object[] for a non-varargs call and to suppress this warning
| List<Object> notNullList = List.of(null);
| ^--^
| java.lang.NullPointerException thrown:
| at List.of (List.java:1030)
| at (#10:1)
  • 序列化–如果元素可序列化,则序列化

列出特定特征

  • 订单–订单与元素输入保持相同
jshell> List<String> immutableList = List.of("one","two","three")
immutableList ==> [one, two, three]
| created variable immutableList : List<String>

设置特定特征

  • 拒绝重复–集合还将在创建时使用IllegalArgumentException拒绝重复–
jshell> Set.of("one","one")
| java.lang.IllegalArgumentException thrown: duplicate element: one

地图特定特征

  • 拒绝重复的Keus –映射将拒绝具有IllegalArgumentException的重复键–
jshell> Map.of("key1", "value1", "key1", "value2")
| java.lang.IllegalArgumentException thrown: duplicate key: key1
| at ImmutableCollections$MapN.<init> (ImmutableCollections.java:680)
| at Map.of (Map.java:1326)
| at (#15:1)
  • 也不保证迭代

结论

这些是用于创建不可变集合的有用且快速的方法,而jshell为了解新方法及其相关特性提供了良好的测试基础。

翻译自: https://www.javacodegeeks.com/2017/10/java-9-jshell-examples-collections-static-factory-methods.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实现次方的运算_Java中对于位运算的优化以及运用与思考

引言随着JDK的发展以及JIT的不断优化&#xff0c;我们很多时候都可以写读起来易读但是看上去性能不高的代码了&#xff0c;编译器会帮我们优化代码。之前大学里面学单片机的时候&#xff0c;由于内存以及处理器性能都极其有限(可能很多时候考虑内存的限制优先于处理器)&#xf…

三种分集接收技术

选择性合并 在多支路信号中&#xff0c;选取信噪比最高的支路信号作为输出信号、 最大比值合并 在接收端由L个统计不相关的分集支路经过相位矫正&#xff0c;赋予适当的加权再进行相关检测&#xff0c;信噪比小的支路权重小 等增益合并 在上述最大比值合并中&#xff0c;等…

dep指定版本 go_Go 1.12 版本的新特性

Go 1.12昨天&#xff0c;Go 官方发布 1.12 版本。本文介绍下 Go 1.12 版本变更的内容。Go 1.12 正式版发布了&#xff0c;距离上个正式发布版 Go 1.11 已经过去半年。跟往常一样&#xff0c;Go 1.12 保持了 兼容性承诺&#xff0c;预期所有 Go 程序会像之前一样正常编译。新版本…

信号与系统 chapter14 卷积积分的应用

卷积的时移特性 若有一个卷积&#xff1a; f(t)f1(t)∗f2(t)f(t)f_1(t)*f_2(t)f(t)f1​(t)∗f2​(t)&#xff0c;卷积右边的函数都发生了时移&#xff0c;分别为t1,t2t_1,t_2t1​,t2​&#xff0c;则有&#xff1a; 不要管怎么来&#xff0c;记下就完事了 例题&#xff1a; …

java null转换jason_Java笔记Java常量、变量

“要成为绝世高手&#xff0c;并非一朝一夕&#xff0c;除非是天生武学奇才&#xff0c;但是这种人…万中无一”——包租婆这道理放在Java语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数&#xff0c;我们大多数人想要从java语言小白进阶到高手&#xff0c;需要经…

通信系统中的多普勒频移

多普勒现象在通信系统中的表现 当终端在运动特别是在高速运动时&#xff0c;移动终端和基站接收端的信号频率会发生变化&#xff0c;其计算公式如下图所示&#xff1a; fdfc∗v∗cosθf_d\frac{f}{c}*v*cos\thetafd​cf​∗v∗cosθ θ\thetaθ为移动台移动方向与入射方向的夹…

mockito_Mockito – JAXB的RETURNS_DEEP_STUBS

mockito很抱歉没有写一段时间&#xff0c;但是我正忙于为DZone编写JBoss Drools Refcard&#xff0c;而且我正在写一本有关Mockito的书&#xff0c;因此我没有太多时间来写博客了…… 无论如何&#xff0c;最近在我当前的项目中&#xff0c;我对使用Mockito和JAXB结构进行单元…

常见扩频序列

扩频通信就要借助扩频序列 对扩频序列的要求如下&#xff1a; 具有尖锐的自相关特性有尽可能小的互相关特性&#xff0c;最好为0序列平衡&#xff0c;0与1的数量尽可能一样多在扩频序列族中有数目足够多的序列可供选用有尽可能大的序列复杂度 常见的几种扩频序列 PN序列 第一…

python3字符串拼接_Python3基础 str + 字符串变量拼接

????? Python : 3.7.0?????? OS : Ubuntu 18.04.1 LTS?????? IDE : PyCharm 2018.2.4????? Conda : 4.5.11???typesetting : Markdown?code[email protected]:~$ source activate py37(py37) [email protected]:~$ ipythonPython 3.7.0 (defaul…

Spring,Reactor和ElasticSearch:从回调到反应流

Spring 5&#xff08;以及Boot 2&#xff0c;在数周之内到货&#xff09;是一次革命。 不是“ XML上的注释 ”或“ Java上的注释类 ”的革命。 这是一个真正的革命性框架&#xff0c;可以编写全新的应用程序类别。 近年来&#xff0c;我对此框架感到有些恐惧。 “ Spring Cloud…

通信工程施工设计纲领文件

通信工程设计基本概念 通信系统的重要组成部分&#xff1a;交换机、传输设备、基站控制器、无线基站 通信建设工程设计的任务&#xff1a;将上述器材有机结合&#xff0c;让他们形成预期的高效的通信系统&#xff0c;在经济社会建设中发挥最大的作用 名称作用通信建设工程设计…

删除文件夹下所有的文件_VB删除文件和文件夹的方法

在VB编程中&#xff0c;我们如何删除一个指定的文件&#xff0c;或者文件夹呢&#xff1f;本文&#xff0c;介绍两种方法&#xff0c;详细的介绍如何实现删除文件和文件夹&#xff0c;并对两种方法的区别做一个说明。一、删除文件的方法方法1&#xff1a;使用kill方法删除文件语…

vue 无法进入response拦截器_vue拦截器的一次实践

起因最近在做一个项目前端框架使用的是vue&#xff0c;项目接近尾声的时候发现需要增加一个对所有的http请求过滤的功能&#xff0c;所有的请求需要加上token再发送给服务器&#xff0c;服务器根据token判断用户身份是否有效&#xff0c;响应也需要过滤&#xff0c;判断是否授权…

无线网络设计基础

移动电波的传播特点 受到地形影响因素大存在严重的多径衰落迹象存在固定通信中没有的阴影衰落存在相对运动引起的多普勒效应存在由时延散布引起的信号波形展宽 无线收发信设备、天馈线系统、无线电信道组成无线通信系统 自由空间传输损耗 理想条件下&#xff1a; Lbs32.4520…

lambdas for_Lambdas:来到您附近的Java 8!

lambdas for什么是Lambda&#xff1f; Lambda表达式是一种匿名函数&#xff0c;可以在方法中内联编写&#xff0c;并且可以在使用表达式的任何地方使用。 有时您可能会发现它们被称为闭包&#xff0c;尽管我在下面解释了对该参考的一些注意事项。 像普通的Java方法一样&#xf…

python反转一个整数、123变成321_python整数反转算法

题目描述&#xff1a;给出一个 32 位的有符号整数&#xff0c;你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数&#xff0c;则其数值范围为 [−231…

GSM网络与CDMA网络话务量、基站容量相关计算

GSM网络与CDMA网络的区别 网络类型GSMCDMA编码方式频分多址和时分多址相结合方式码分多址覆盖面积较小较大容量小大话音质量较低支持软切换&#xff0c;和较软切换&#xff0c;使得用户在基站边缘通话时信号更加稳定 GSM规范中推荐使用的频道配置规范 GSM的频道配置 每个小区…

python开源流程图软件_Dia

软件简介Dia是开放源码的流程图软件&#xff0c;是GNU计划的一部分&#xff0c;程式创立者 是Alexander Larsson。Dia使用single documentinterface (CSDI)模式&#xff0c;类似于GIMP。Dia将多种需求以模组化来设计&#xff0c;如流程图、网络图、电路图等。各模组之间的符号仍…

Spring,Reactor和ElasticSearch:使用伪造的测试数据进行标记

在上一篇文章中&#xff0c;我们创建了一个从ElasticSearch的API到Reactor的Mono的简单适配器&#xff0c;如下所示&#xff1a; import reactor.core.publisher.Mono;private Mono indexDoc(Doc doc) {//... }现在&#xff0c;我们希望以受控的并发级别运行此方法数百万次。 …

通信工程施工图案例分析

分析入口 给你一个城市&#xff0c;要如何开始分析&#xff0c;如下图&#xff1a; 分析一下城市的情况&#xff1a; 主要有&#xff1a; 行政区域地理位置&#xff0c;周围的地形经济发展情况X事发展的情况交通发展的情况其他&#xff1a;还包括农林、旅游、气象、地质、水…