欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > Java 9 List.of()的使用

Java 9 List.of()的使用

2024/10/24 6:24:48 来源:https://blog.csdn.net/m0_74051652/article/details/141306225  浏览:    关键词:Java 9 List.of()的使用

List.of() 是 Java 9 引入的一个静态方法,用于创建不可变的列表(ImmutableList)。这意味着一旦使用 List.of() 创建了列表,你就不能向其中添加、删除或修改元素。这个方法提供了一种方便的方式来创建包含零个或多个元素的不可变列表。

List.of() 方法有几个重载版本,允许你传递零个到十个元素作为参数。如果你需要创建包含超过十个元素的列表,你可以使用 List.of() 方法来组合较小的列表,或者使用其他集合构造方法(如 Arrays.asList() 后跟 Collections.unmodifiableList(),尽管这不是一个纯粹的不可变列表,因为它仍然可以通过原始数组进行修改)。

基本用法

// 创建一个空的不可变列表  
List<String> emptyList = List.of();  // 创建一个包含单个元素的不可变列表  
List<Integer> singleElementList = List.of(1);  // 创建一个包含多个元素的不可变列表  
List<String> multipleElementsList = List.of("apple", "banana", "cherry");

注意事项

  1. 不可变性:一旦创建,列表的内容就不能更改。尝试添加、删除或修改元素将导致 UnsupportedOperationException

  2. 性能:由于不可变性,List.of() 创建的列表在性能上可能不是最优的,特别是在进行大量修改操作时。然而,对于需要不可变集合的场景,这种方法提供了简洁性和安全性。

  3. 类型安全:由于 List.of() 是一个泛型方法,它可以确保列表的类型安全。

  4. 使用场景List.of() 非常适用于创建常量列表、配置列表或作为方法参数传递的不可变列表。

  5. 元素限制:直接通过 List.of() 方法最多可以传递十个元素。如果需要更多元素,请考虑使用其他集合构造方法或组合多个 List.of() 调用。

示例:组合多个 List.of() 调用

// 创建两个较小的不可变列表  
List<Integer> firstHalf = List.of(1, 2, 3, 4);  
List<Integer> secondHalf = List.of(5, 6, 7, 8, 9, 10);  // 使用 Stream 将它们组合成一个较大的不可变列表  
List<Integer> combinedList = Stream.concat(firstHalf.stream(), secondHalf.stream())  .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));  // 注意:上面的 combinedList 实际上不是纯粹的 List.of() 创建的不可变列表,  
// 但它通过使用 Collections.unmodifiableList() 达到了类似的效果。  // 更简洁但非纯不可变的方法(如果不需要完全的不可变性)  
List<Integer> simplerCombinedList = new ArrayList<>(firstHalf);  
simplerCombinedList.addAll(secondHalf);  
// 注意:simplerCombinedList 是可变的

上面的 simplerCombinedList 示例是可变的,而 combinedList 示例则通过 Collections.unmodifiableList() 尝试创建一个不可变列表,但它不是由 List.of() 直接创建的。对于完全由 List.of() 创建的不可变列表,你应该直接传递元素给 List.of(),或者如果元素数量超过限制,则考虑使用其他设计。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com