JDK17新特性之 |
您所在的位置:网站首页 › list集合的方法有哪些 › JDK17新特性之 |
前言
定义这些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 |