- 目的
将集合中存放的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'
}
]