JDK17新特性之

您所在的位置:网站首页 list集合的方法有哪些 JDK17新特性之

JDK17新特性之

2023-05-15 17:45| 来源: 网络整理| 查看: 265

前言

定义这些API是为了方便创建具有少量元素的集合和MAP实例,为了减轻Java编程语言中没有集合字面常量带来的痛苦1

List JAVA中创建List的几种方法

JAVA中自带创建List方法还是比较多的,我总结一些常用的创建方法

1. 最简单的new ArrayList() 然后一个一个add

这种创建方式还是比较冗长的,这也是为什么会有新的创建List方法的原因

List list1 = new ArrayList(); list1.add(1); list1.add(2); list1.add(3); 复制代码 2. 使用Arrays.asList()创建不可变List

这种方法创建List看起来比较简洁,但是还是有些小坑的2

List list2 = Arrays.asList(1, 2, 3, 4); 复制代码 3. 使用 Collections.unmodifiableList创建不可变List List list3 = Collections.unmodifiableList(list1); List list4 = Collections.unmodifiableList(new ArrayList() {{ add(1); add(2); add(3); }}); 复制代码 4. 使用Java8 Lambda创建不可变List List list5 = Collections.unmodifiableList(Stream.of(1,2,3,4).collect(Collectors.toList())); 复制代码 5. 使用guava、hutool 第三方JAR包创建List //guava 可变LIST List list6 = com.google.common.collect.Lists.newArrayList(1, 2, 3); //guava 不可变LIST List list7 = com.google.common.collect.ImmutableList.of(1, 2, 3, 4); //hutool List list8 = cn.hutool.core.collection.CollUtil.newArrayList(1, 2, 3, 4); 复制代码 JDK9+新的创建不可变List方法

从JDK9开始就可以使用新的创建不可变List方法了,使用方法和Guava的一样

//JDK9+ List newList = List.of(1,2,3,4); 复制代码

从源码来看,用这个方法创建的集合 调用add()、addAll()、remove()、replaceAll()、set()、sort()都会抛出UnsupportedOperationException

static List of(E e1, E e2) { return new ImmutableCollections.List12(e1, e2); } static final class List12 extends AbstractImmutableList implements Serializable { @Stable private final E e0; @Stable private final Object e1; List12(E e0) { this.e0 = Objects.requireNonNull(e0); // Use EMPTY as a sentinel for an unused element: not using null // enables constant folding optimizations over single-element lists this.e1 = EMPTY; } } static abstract class AbstractImmutableList extends AbstractImmutableCollection implements List, RandomAccess { // all mutating methods throw UnsupportedOperationException @Override public void add(int index, E element) { throw uoe(); } @Override public boolean addAll(int index, Collection


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3