使用flatMap处理Java中的嵌套集合

本文介绍了如何使用Java8处理嵌套集合,包括通过forEach方法和Stream API的flatMap方法将嵌套的List展平为单一列表。示例展示了如何创建嵌套集合,然后使用两种不同的方法将其展平,并进行了断言验证展平后的列表内容。这些技巧对于处理复杂数据结构非常实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.嵌套集合的示例

List<List<String>> nestedList = asList(
  asList("one:one"), 
  asList("two:one", "two:two", "two:three"), 
  asList("three:one", "three:two", "three:three", "three:four"));

2.使用forEach整合列表

为了将这个嵌套的集合展平为字符串列表,可以将forEach与Java 8方法参考结合使用:

public <T> List<T> flattenListOfListsImperatively(
    List<List<T>> nestedList) {
    List<T> ls = new ArrayList<>();
    nestedList.forEach(ls::addAll);
    return ls;
}
@Test
public void test7() {
    List<String> ls = flattenListOfListsImperatively(nestedList);
    
    assertNotNull(ls);
    assertTrue(ls.size() == 8);
    assertThat(ls, IsIterableContainingInOrder.contains(
      "one:one",
      "two:one", "two:two", "two:three", "three:one",
      "three:two", "three:three", "three:four"));
}

3.使用flatMap展平列表

可以利用Stream API中的flatMap方法展平嵌套列表。

可以展平嵌套的Stream结构,并最终将所有元素收集到一个特定的集合中:

public <T> List<T> flattenListOfListsStream(List<List<T>> list) {
    return list.stream()
      .flatMap(Collection::stream)
      .collect(Collectors.toList());    
}
 @Test
    public void test8() {
        List<String> ls = flattenListOfListsStream(nestedList);
        System.out.println(ls);
        assertNotNull(ls);
        assertTrue(ls.size() == 8);
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值