JDK8 连个for 循环 如果key 一样 替换value

JDK8 连个for 循环  如果key 一样 替换value

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