java9新特性Collection集合类的增强与优化方法示例

目录
  • 一、提供of()方法创建集合
    • 1.1.构建Set集合对象
    • 1.2.构建List集合对象
    • 1.3.构建Map对象
    • 1.4.使用Map.ofEntries()和Map.entry()
  • 二、Arrays
    • 2.1.Arrays.mismatch()
    • 2.2.Arrays.equals()

我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注。期待您能关注我,我将把java 9 写成一系列的文章,大概十篇左右,本文是第5篇。

java9在interface中定义私有方法详解

java9版本特性资源自动关闭的语法增强

Java9版本新特性同一个Jar支持多JDK版本运行

java9新特性Reactive Stream响应式编程 API

Java9新特性Stream流API优化与增强

Java9新特性Java.util.Optional优化与增强解析

Java9新特性Module模块化编程示例演绎

Java9新特性对HTTP2协议支持与非阻塞HTTP API

本文带大家快速的了解一下在Java 9 种集合类Colleaction子类都发生了哪些比较有用的变化与增强。

一、提供of()方法创建集合

1.1.构建Set集合对象

Java 9 提供了一系列的工厂方法of()来更加简便的构建Set集合对象。使用of()方法构建java.util.Set我们就不用一个元素一个元素的add()数据了。但需要注意的是:这种方法构建的Set集合类对象一旦构建就不能更改,不能再新增集合元素。

Set<Integer> integers = Set.of(2, 6, 7, 10);
System.out.println(integers);  //[2, 10, 6, 7]

还有许多重载的of()工厂方法供我们使用

 of()//空的set
 of(E)
 of(E, E)
 of(E, E, E)
 //更多 ......
 of(E, E, E, E, E, E, E, E, E, E )// 一直到十个元素
 of(E...)//更多参数

1.2.构建List集合对象

和Set集合类似,List集合类也新增了一系列的of()工厂函数,创建不可变的List集合对象。

 List<Integer> integers = List.of(2, 6, 7, 10);
 System.out.println(integers); // [2, 6, 7, 10]

1.3.构建Map对象

虽然Map不是Colleaction的子类,但是我们一般也把它当作集合类学习。Map类同样新增了一系列的of()工厂函数,创建不可变的Map对象。唯一的区别是使用Key/Value的形式传递参数。

 Map<Integer, String> map = Map.of(2, "two", 6, "six");
 System.out.println(map); // {2=two, 6=six}

1.4.使用Map.ofEntries() 和 Map.entry()

工厂方法Map.ofEntries接受Map.Entry作为varargs。还有另一个相关的新静态方法Map.entry(K, V)来创建Entry实例。

 Map<Integer, String> map = Map.ofEntries(Map.entry(2, "two"), Map.entry(4, "four"));
 System.out.println(map); //{2=two, 4=four}

二、Arrays

Arrays是我们进行集合操作的工具类,在Java 9 版本中也进行了增强。

2.1.Arrays.mismatch()

这些新方法用于查找两个数组之间的第一个不匹配索引。例如,下面的代码查找两个整数数组之间的第一个不匹配项。如果没有不匹配,则此方法将返回-1。

int[] ints1 = {1, 3, 5, 7, 9};
int[] ints2 = {1, 3, 5, 6, 7};
int i = Arrays.mismatch(ints1, ints2);
System.out.println(i); //3

另一个这样的方法接受fromIndex和toIndex参数来查找相对不匹配的索引。例如:

 int mismatch(int[] a, int aFromIndex, int aToIndex,
                int[] b, int bFromIndex, int bToIndex)

从arrayA的索引第1个元素,arrayB索引第2个元素开始的区间内,进行第一个不匹配项目的查找。

 int[] arrayA = {-2, 1, 3, 5, 7, 9};
 int[] arrayB = {-1, 0, 1, 3, 5, 7, 10};
 int j = Arrays.mismatch(arrayA, 1, arrayA.length, arrayB, 2, arrayB.length);
 System.out.println(j);

2.2.Arrays.equals()

Arrays.mismatch()有些相似,Arrays.equals()用来判断两个数组区间内的元素是否相等。新方法为两个被比较的数组新增了fromIndex和toIndex参数。这些方法根据两个数组的相对索引位置检查两个数组的相等性。

 String[] sa = {"d", "e", "f", "g", "h"};
 String[] sb = {"a", "b", "c", "d", "e", "f"};
 boolean b = Arrays.equals(sa, 0, 2, sb, 3, 5);
 System.out.println(b);  //true

从sa数组的索引0-2,与sb数组的索引3-5的元素进行比对。结果为true相等。

以上就是java9新特性Collection集合类的增强与优化方法示例的详细内容,更多关于java9 Collection集合类增强的资料请关注我们其它相关文章!

(0)

相关推荐

  • 浅谈Java中常用数据结构的实现类 Collection和Map

    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个C

  • Java Collection 接口和常用方法综合详解

    目录 1. Collection 接口实现类的特点 2. Collection 接口常用方法 3. Collection接口遍历元素方式1- 使用Iterator(迭代器) 4. Collection 接口遍历对象方式2- for 循环增强 5. 练习 1. Collection 接口实现类的特点 public interface Collection<E> extends Iterable<E> 1)Collection实现子类可以存放多个元素,每个元素可以是Object 2)有

  • Java9 集合工厂方法解析

    目录 使集合框架更便捷的工厂方法 集合框架增加工厂方法是必然的结果 早先的使用过程如下 也不得不提一下下面这些单语句表达式 下面是其原始类型的简明表达方式 一起来看看集合工厂方法 以下工厂方法已添加到List接口中 以下工厂方法已添加到Set接口中 以下是List和Set的示例 以下工厂方法则添加到Map接口中 下面是Map的ofEntries() 和entry()方法的示例 使集合框架更便捷的工厂方法 JEP269中提议,为集合框架增添一些工厂方法,来使创建不可变集合类与含有少量元素的Map变

  • collection集合体系与并发修改异常的解决方法

    collection是单列集合的顶层接口,下面还包括了两个常用子接口  List.set List: list接口有两个实现的子类:特点是:有序且可重复 ArrayList的数据结构是数组结构 LinkedList的数据结构是链表结构 1.ArrayList:特点:查询快 增删慢  初始容量大小为10 扩充容量算法为    ((旧容量 * 3) / 2) + 1 如果你知道你的arrayList 会达到多少容量,可以在初始化的时候就指定,能节省扩容的性能开支 2.LinkedList:特点: 

  • Java 深入浅出掌握Collection单列集合Set

    目录 前言 Set集合 Set概述 Set特点 HashSet集合 HashSet概述 HashSet特点 HashSet集合保证元素唯一性源码分析 LinkedHashSet集合 LinkedHashSet概述与特点 TreeSet集合 TreeSet特点 TreeSet(排序方式) 总结 前言 Hello!上一期我大致讲解了关于Collection单列集合以及它的子接口List集合的概述.特点和遍历等,今天我为大家讲解关于Collection集合的另一个子接口-->Set集合的相关知识点.

  • java9新特性Collection集合类的增强与优化方法示例

    目录 一.提供of()方法创建集合 1.1.构建Set集合对象 1.2.构建List集合对象 1.3.构建Map对象 1.4.使用Map.ofEntries()和Map.entry() 二.Arrays 2.1.Arrays.mismatch() 2.2.Arrays.equals() 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 写成一系列的

  • Java9新特性Stream流API优化与增强

    目录 1.Stream.takeWhile(Predicate) 2.Stream.dropWhile(Predicate) 3.StreamStream.iterate(T,Predicate,UnaryOperator) 4.StreamStream.ofNullable(T) 5.IntStream,LongStream和DoubleStream方法 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还

  • Java9新特性Java.util.Optional优化与增强解析

    目录 一.Java9的ifPresentOrElse(Consumer,Runnable) 1.1.Java9中的增强 1.2.回顾一下Java8中的写法 二.Java9的Optional.or(Supplier) 三.Java9的Optional.stream() 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 写成一系列的文章,大概十篇左右,

  • Java9新特性对HTTP2协议支持与非阻塞HTTP API

    目录 一.HTTP/2简介 HTTP/2数据推送 目前支持 HTTP/2 的 Java HTTP 客户端 二.Java 9 的 HTTP/2 客户端 在阻塞模式下发送请求 以非阻塞模式发送请求(Java 9) 三.支持HTTP2的Push-Promise Frames 在HTTP/1.1 发布了16 年之后,IETF在2015年终于通过了HTTP/2 协议.HTTP/2协议旨在降低延迟,满足当今时代对于信息响应时间的要求.在这篇文章中,我会简要的对HTTP/2协议进行介绍,然后我们将重点放在研究

  • Java9新特性中的模块化详解

    目录 模块化是什么? 那么,模块化怎么用呢? 为什么要用模块化 显式管理依赖: 强封装性: 安全性: 规范性: 自定义最小运行时映像: 孵化器模块的支持: Java9中的一个重大特性是增加了一种新型的程序设计组件 - 模块. 官方对模块的定义为:一个被命名的,代码和数据的自描述集合.( the module, which is a named, self-describing collection of code and data). 这个在Java7的时候就已经被提出,但由于其复杂性,不断跳票

  • spring4新特性之web开发增强

    从Spring4开始,Spring以Servlet3为进行开发,如果用Spring MVC 测试框架的话需要指定Servlet3兼容的jar包(因为其Mock的对象都是基于Servlet3的).另外为了方便Rest开发,通过新的@RestController指定在控制器上,这样就不需要在每个@RequestMapping方法上加 @ResponseBody了.而且添加了一个AsyncRestTemplate ,支持REST客户端的异步无阻塞支持. 1.@RestController Java代码

  • java9新特性Reactive Stream响应式编程 API

    目录 一.Java9ReactiveStreamAPI 二.Java响应式编程四大接口 2.1.SubscriberInterface(订阅者订阅接口) 2.2.SubscriptionInterface(订阅令牌接口) 2.3.PublisherInterface(发布者接口) 2.4.ProcessorInterface(处理器接口) 二.实战案例 实现订阅者SubscriberInterface SubmissionPublisher消息发布者 我计划在后续的一段时间内,写一系列关于jav

  • Java9新特性对HTTP2协议支持与非阻塞HTTP API

    目录 一.HTTP/2简介 HTTP/2数据推送 目前支持HTTP/2的JavaHTTP客户端 二.Java9的HTTP/2客户端 在阻塞模式下发送请求 以非阻塞模式发送请求(Java9) 三.支持HTTP2的Push-PromiseFrames 在HTTP/1.1 发布了16 年之后,IETF在2015年终于通过了HTTP/2 协议.HTTP/2协议旨在降低延迟,满足当今时代对于信息响应时间的要求.在这篇文章中,我会简要的对HTTP/2协议进行介绍,然后我们将重点放在研究Java9中对HTTP

  • Java9新特性Module模块化编程示例演绎

    目录 一.什么是Javamodule? 二.模块导出package 三.模块导入package 四.Javamodule的意义 五.实例 第一个模块 第二个模块 尝试使用未被exports的package代码 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 写成一系列的文章,大概十篇左右,本文是第8篇. 在Java 9版本中Java 语言引入了一

  • java9新特性Reactive Stream响应式编程 API

    目录 一.Java9ReactiveStreamAPI 二.Java响应式编程四大接口 2.1.SubscriberInterface(订阅者订阅接口) 2.2.SubscriptionInterface(订阅令牌接口) 2.3.PublisherInterface(发布者接口) 2.4.ProcessorInterface(处理器接口) 二.实战案例 实现订阅者SubscriberInterface SubmissionPublisher消息发布者 我计划在后续的一段时间内,写一系列关于jav

随机推荐