java 静态缓存示例

这篇文章继续从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

java 静态缓存示例

java 静态缓存示例_Java 9 JShell示例:集合静态工厂方法相关推荐

  1. java io 缓存读取_Java 文件IO写入读取四种方法

    第一种:字节流 FileInputStream  FileOutputStream 1.1 读取操作 //先创建一个和硬盘连接的流(打通硬盘和内存的通道) FileInputStream fis = ...

  2. java中使用配置文件_Java中使用Properties配置文件的简单方法

    Java中使用Properties配置文件的简单方法 properties Properties文件是java中的一种配置文件,文件后缀为".properties",文件的内容格式 ...

  3. java调用MySQL脚本_Java调用SQL脚本执行常用的方法示例

    前言 大家都知道,在Java中调用SQL脚本的方式有多种,在这里只记录一种自己常用的方式,个人觉得挺实用方便的. 运用ScriptRunner这个类. ScriptRunner类用于执行SQL语句,例 ...

  4. java.time.format例子_java格式化时间示例

    实现日期的格式化,需要用到类: java.text.DateFormat DateFormat没有可以直接使用的构造函数,一般使用DateFormate的子类---java.text.SimpleDa ...

  5. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...

    java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...

  6. java 方法 示例_Java扫描器具有示例的NextNextShort()方法

    java 方法 示例 扫描器类的hasNextShort()方法 (Scanner Class hasNextShort() method) Syntax: 句法: public boolean ha ...

  7. java文件快速扫描仪_Java扫描仪具有示例的NextNextShort()方法

    扫描仪类hasNextShort()方法 语法:public boolean hasNextShort(); public boolean hasNextShort(int rad);hasNextS ...

  8. java 方法 示例_Java扫描仪具有示例的NextNextInt()方法

    java 方法 示例 扫描器类的hasNextInt()方法 (Scanner Class hasNextInt() method) Syntax: 句法: public boolean hasNex ...

  9. java 方法 示例_Java ArrayDeque带有示例的removeFirstOccurrence()方法

    java 方法 示例 ArrayDeque类removeFirstOccurrence()方法 (ArrayDeque Class removeFirstOccurrence() method) re ...

最新文章

  1. IT人士在职场中需要哪些Skill?
  2. Ubuntu Snap 简述
  3. php简单实用的操作文件工具类(创建、移动、复制、删除)
  4. etag flag setting in metadata MPC_EXT
  5. android4.2 音频模块启动分析,Android 音频模块学习小结
  6. lintcode 中等题:Divide Two Integers 两个数的除法
  7. Activity——思维导图
  8. Android10动态权限提前,Unity2019中的android动态申请权限(Permissions)
  9. 1050 String Subtraction(20 分)
  10. 【C语言】17-预处理指令3-文件包含
  11. brew彻底卸载mysql
  12. php根据经纬度获取地理位置
  13. 三菱f800变频器 频率设定_三菱plc和变频器通讯怎么设置频率
  14. 如何将图片做成内外边框HTML,如何用html给图片加边框
  15. IRP IO_STACK_LOCATION 《寒江独钓》内核学习笔记(1)
  16. 计算机论文 a会 c会,ccf b类论文 sci几区_焦文静_电影学者王田
  17. Error “Client wants topic A to have B, but our version has C. Dropping connection.“
  18. 新手python之BP神经网络——手写公式推导+可运行代码+编程中遇到的问题
  19. linux越狱时手机怎么进入dfu,iPhone12如何进入DFU模式?IPhone12进DFU教程
  20. 【2023年最新版】Kali安装详细教程

热门文章

  1. test 7 3-22 2021省选模拟赛seven
  2. P3835-[模板]可持久化平衡树【无旋Treap】
  3. P5644-[PKUWC2018]猎人杀【NTT,分治】
  4. Loj2687,jzoj3320-文本编辑器【线头dp】
  5. P2375-[NOI2014]动物园【KMP,字符串】
  6. 练习利用LSTM实现手写数字分类任务
  7. Consul集群搭建
  8. JavaFX拖放事件
  9. Linux下如何避免误操作执行 rm
  10. 【Java】jdk和eclipse下载安装