使用Stream处理List<Data>中的数据

  • 目的

将集合中存放的DataTest 类中的data属性,按照逗号拆分,并将拆分结果,进行计算,最后拼接,重新赋值给data属性

  • 实体类

/**
 * @Description: 数据测试
 */
public class DataTest {
    String ID;
    String data;

    public DataTest(String ID, String data) {
        this.ID = ID;
        this.data = data;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "DataTest{" +
                "ID='" + ID + '\'' +
                ", data='" + data + '\'' +
                '}';
    }
}

  • 编写流
@Test
public void test2() {
	DataTest d1=new DataTest("1","1,2,3");
	DataTest d2=new DataTest("1","4,5,6");


        //创建数据
        List<DataTest> resultList = new ArrayList<>();
        resultList.add(d1);
        resultList.add(d2);

        //处理数据
        List<DataTest> newList = resultList.stream().map((data)->{
            //获取需要处理的数据
            String handleDataStr = data.getData();
            if(handleDataStr!=null){
                //将数据按照字符串拆分
                String [] handleDataArr=handleDataStr.split(",");
                //使用拆分后的字符串数组获取一个流
                Stream<String> handleDataStream = Stream.of(handleDataArr).map((String handleData) -> {
                    Double min = Double.parseDouble(handleData) - 10000 <= 0 ? Double.parseDouble(handleData) : Double.parseDouble(handleData) - 10000;
                    Double max = Double.parseDouble(handleData) + 10000;
                    return String.valueOf(min).concat("____").concat(String.valueOf(max));
                });
                //将流转化为数组
                String[] strings = handleDataStream.toArray(String[]::new);
                //将数据装化为字符串
                String newHandleDataStr = Arrays.toString(strings).replace("[","").replace("]","");
                //以上两步也可以用这个
//                StringUtils.join(handleDataStream.toArray(String[]::new), ",");

                data.setData(newHandleDataStr);
            }
            return data;
        }).collect(Collectors.toList());


        System.out.println("最终结果-->"+newList);

}

  • 输出结果
[
  DataTest{
    ID='1', 
    data='1.0____10001.0, 2.0____10002.0, 3.0____10003.0'
  }, 
  DataTest{
    ID='1', 
    data='4.0____10004.0, 5.0____10005.0, 6.0____10006.0'
    
  }
]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

亿只王菜菜

各位爷,赏口饭吃吧

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

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

打赏作者

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

抵扣说明:

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

余额充值