java 8 stream流 flatmap 扁平化学习

#java 8 stream流 flatmap 扁平化学习
代码如下:

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = AppFreePlan.class) 
public class FlatMapTest { 
    class DayData { 
        private String date; 
        private String value; 
 
        public DayData(String date, String value) { 
            this.date = date; 
            this.value = value; 
        } 
 
        public String getDate() { 
            return date; 
        } 
 
        public void setDate(String date) { 
            this.date = date; 
        } 
 
        public String getValue() { 
            return value; 
        } 
 
        public void setValue(String value) { 
            this.value = value; 
        } 
    } 
     
    class MonthData { 
        List<DayData> dayDataList; 
        private String month; 
         
        public MonthData(List<DayData> dayDataList, String month) { 
            this.dayDataList = dayDataList; 
            this.month = month; 
        } 
    } 
     
    @Test 
    public void test() { 
        MonthData monthData1 = new MonthData(null, "2023-08"); 
        DayData[] dayDataArray = new DayData[] { 
                new DayData("2023-08-01", "1"), 
                new DayData("2023-08-02", "2") 
        }; 
        List<DayData> dayDataList = Arrays.asList(dayDataArray); 
        monthData1.dayDataList = Collections.unmodifiableList(dayDataList); 
 
        MonthData monthData2 = new MonthData(null, "2023-09"); 
        DayData[] dayDataArray2 = new DayData[] { 
                new DayData("2023-09-01", "1"), 
                new DayData("2023-09-02", "2") 
        }; 
        List<DayData> dayDataList2 = Arrays.asList(dayDataArray); 
        monthData2.dayDataList = Collections.unmodifiableList(dayDataList2); 
        List<MonthData> monthDataList = Arrays.asList(monthData1, monthData2); 
        // 使用flatMap将List<MonthData>转换为List<DayData> 
        List<DayData> dayDataList3 = monthDataList.stream() 
                .flatMap(monthData -> monthData.dayDataList.stream()) 
                .collect(Collectors.toList()); 
    } 
}

更多使用方法

除了处理嵌套列表,flatMap 还可以用于其他类型的数据转换。例如,将一个流中的每个字符串拆分成单词,并将所有单词合并成一个流:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class FlatMapExample {
    public static void main(String[] args) {
        List<String> sentences = Arrays.asList(
            "Hello world",
            "Java stream flatMap",
            "flatMap example"
        );

        List<String> words = sentences.stream()
            .flatMap(sentence -> Arrays.stream(sentence.split(" ")))
            .collect(Collectors.toList());

        System.out.println(words);
    }
}

输出结果将是:[Hello, world, Java, stream, flatMap, flatMap, example]
总结:flatMap是解决嵌套列表的一个好方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Afraidlight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值