ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用stream flatmap获取集合中对象多个同类型数据 收集为另一个集合

2022-06-04 11:04:21  阅读:142  来源: 互联网

标签:flatmap String stream List private add 集合 import


目的 把list集合中对象里面的多个string类型数据放在一个集合中

测试类

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * strean测试
 *
 * @Author liguangcheng
 * @Date 2022/6/3 09:31
 * @Vision 1.0
 **/
public class StreamTest {
    public static void main(String[] args) {
        List<String> testList = new ArrayList();
        testList.add("d");
        testList.add("c");
        List<String> list1 = new ArrayList();
        list1.add("a");
        list1.add("b");

        WxMssDTO wxMssDTO = new WxMssDTO();
        wxMssDTO.setPage("2");
        wxMssDTO.setTouser("4");
        wxMssDTO.setTestList(testList);
        WxMssDTO wxMssDTO1 = new WxMssDTO();
        wxMssDTO1.setPage("3");
        wxMssDTO1.setTouser("5");
        wxMssDTO1.setTestList(list1);
        List<WxMssDTO> wxMssDTOList = new ArrayList();
        wxMssDTOList.add(wxMssDTO1);
        wxMssDTOList.add(wxMssDTO);

        //把wxMssDTOList中每个WxMssDTO中的test集合中的元素放在一起
        List<String> testLists = wxMssDTOList.stream().map(WxMssDTO::getTestList).flatMap(Collection::stream).collect(Collectors.toList());
        System.out.println("所有test集合中的元素==>" + testLists);

        //把wxMssDTOList中每个WxMssDTO中的Page和touser放在一起
        List<String> pageAndTouserList = wxMssDTOList.stream().flatMap(s -> {
            String page = s.getPage();
            String touser = s.getTouser();
            List<String> strings = new ArrayList();
            strings.add(page);
            strings.add(touser);
            // 将每个元素转换成一个stream
            Stream<String> stream = strings.stream();
            return stream;
        }).collect(Collectors.toList());
        System.out.println("所有的Page和touser==>" + pageAndTouserList);
    }
}

打印结果

所有test集合中的元素==>[a, b, d, c]
所有的Page和touser==>[3, 5, 2, 4]

测试实体

import lombok.Getter;
import lombok.Setter;

import java.util.List;
import java.util.Map;

/**
 * 小程序推送所需数据
 *
 * @Author liguangcheng
 * @Date 2022/5/25 10:59
 * @Vision 1.0
 **/
@Getter
@Setter
public class WxMssDTO {
    /**
     * 用户openid
     */
    private String touser;
    /**
     * 模版id
     */
    private String template_id;
    /**
     * 跳转到小程序页面路径
     */
    private String page;
    /**
     * 收集到的用户formid
     */
    private String form_id;
    /**
     * 放大那个推送字段
     */
    private String emphasis_keyword = "keyword1.DATA";
    private String miniprogram_state = "formal";
    private Map<String, TemplateData> data;//推送文字
    private List<String> test;

    @Getter
    @Setter
    public static class TemplateData {
        //keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注
        private String value;//,,依次排下去
    }
}

标签:flatmap,String,stream,List,private,add,集合,import
来源: https://www.cnblogs.com/lgccrush/p/16341416.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有