1,先看比较的对象
public class DataMsg {
private int type;
private int len;
private List<Integer> datas;
}
// 将list转为Map 比双层for快 如果他们的type 相等的话 只替换data的值 封装成一个新的list
List<DataMsg> newDatas = dtuData.getDataMsgList();
Map<Integer, DataMsg> newData = newDatas.stream().collect(
Collectors.toMap(w -> w.getType(),
w -> w));
// 把他的type 当成唯一的key
finalListDatas.stream().forEach(h -> {
DeviceDatas deviceDatas2 = new DeviceDatas();
if (null != newData.get(h.getType()) && newData.get(h.getType()).getType() == h.getType()) {
deviceDatas2.setType(newData.get(h.getType()).getType());
deviceDatas2.setDatas(newData.get(h.getType()).getDatas());
} else {
deviceDatas2.setType(h.getType());
deviceDatas2.setDatas(h.getDatas());
}
list.add(deviceDatas2);
});
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 »
JDK8 连个for 循环 如果key 一样 替换value