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(),或者如果元素数量超过限制,则考虑使用其他设计。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值