c语言sscanf函数的用法是什么
279
2022-10-25
Java8的Lambda遍历两个List匹配数据方式
目录Lambda遍历两个List匹配数据1.定义一个静态方法2.Main方法测试3.输出结果jdk1.8的stream对两个List遍历匹配数据的处理
Lambda遍历两个List匹配数据
1. 定义一个静态方法
/**
* 通过遍历两个List中按id属性相等的归结到resultList中
* @param oneList
* @param twoList
*/
public static List
List
.filter(m -> Objects.equals(m.get("id"), map.get("id")))
.findFirst().map(m -> {
map.putAll(m);
return map;
}).orElse(null))
.filter(Objects::nonNull).collect(Collectors.toList());
return resultList;
}
2. Main方法测试
public static void main(String[] args) {
List
Map
oneMap.put("id", 111);
oneMap.put("userName", "何金荣");
Map
twoMap.put("id", 222);
twoMap.put("userName", "Hejinrong");
oneList.add(oneMap);
oneList.add(twoMap);
List
Map
threeMap.put("id", 111);
threeMap.put("userName", "何金荣");
Map
fourMap.put("id", 333);
fourMap.put("userName", "Hejinrong");
twoList.add(threeMap);
twoList.add(fourMap);
List
System.out.println(resultList);
}
3. 输出结果
jdk1.8的stream对两个List遍历匹配数据的处理
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class testStream {
public static void main(String[] args) {
List
List
for (int i = 0; i < 6; i++) {
AwardInfo AwardInfo = new AwardInfo();
AwardInfo.setStockNo((i+1)+"");
prizeRecords.add(AwardInfo);
}
for (int i = 0; i < 3; i++) {
StockInfo stockDTO = new StockInfo();
stockDTO.setStockNo((i+1)+"");
stockDTO.setThirdStockNo("third"+(i+1));
stockDTOList.add(stockDTO);
}
StockInfo stockDTO1 = new StockInfo();
stockDTO1.setStockNo((44)+"");
stockDTO1.setThirdStockNo("third"+44);
stockDTOList.add(stockDTO1);
StockInfo stockDTO2 = new StockInfo();
stockDTO2.setStockNo((55)+"");
stockDTO2.setThirdStockNo("third"+55);
stockDTOList.add(stockDTO2);
//prizeRecords与stockDTOList求差集
List
.map(map -> stockDTOList.stream()
.filter(m -> !Objects.equals(m.getStockNo(), map.getStockNo()))
.findFirst().map(m -> {
return map;
}).orElse(null))
.filter(Objects::nonNull).collect(Collectors.toList());
/**
* 求差集:失败结果参考
* [AwardInfo{userId='null', stockNo='1', thirdStockNo='null'},
* AwardInfo{userId='null', stockNo='2', thirdStockNo='null'},
* AwardInfo{userId='null', stockNo='3', thirdStockNo='null'},
* AwardInfo{userId='null', stockNo='4', thirdStockNo='null'},
* AwardInfo{userId='null', stockNo='5', thirdStockNo='null'},
* AwardInfo{userId='null', stockNo='6', thirdStockNo='null'}]
*/
System.out.println(resultList1.toString());
/* List
.filter(map -> stockDTOList.stream().anyMatch(map1 -> map.getStockNo().equals(map1.getStockNo())))
.forEach(map -> {
map.setThirdStockNo(map1.getThirdStockNo());
});*/
List
stockDTOList.stream().filter(m2->Objects.equals(m.getStockNo(), m2.getStockNo()))
.forEach(s-> m.setThirdStockNo(s.getThirdStockNo()));
return m;
}).collect(Collectors.toList());
/**
* stockNo=4,5,6的结果没去掉!
* [AwardInfo{userId='null', stockNo='1', thirdStockNo='third1'},
* AwardInfo{userId='null', stockNo='2', thirdStockNo='third2'},
* AwardInfo{userId='null', stockNo='3', thirdStockNo='third3'},
* AwardInfo{userId='null', stockNo='4', thirdStockNo='null'},
* AwardInfo{userId='null', stockNo='5', thirdStockNo='null'},
* AwardInfo{userId='null', stockNo='6', thirdStockNo='null'}]
*/
System.out.println(resultList2.toString());
List
.map(map -> stockDTOList.stream()
.filter(m -> Objects.equals(m.getStockNo(), map.getStockNo()))
.findFirst().map(m -> {
map.setThirdStockNo(m.getThttp://hirdStockNo());
return map;
npLUUZq }).orElse(null))
.filter(Objects::nonNull).collect(Collectors.toList());
/**
* stockNo=4,5,6的结果已去掉
* [AwardInfo{userId='null', stockNo='1', thirdStockNo='third1'},
* AwardInfo{userId='null', stockNo='2', thirdStockNo='third2'},
* AwardInfo{userId='null', stockNo='3', thirdStockNo='third3'}]
*/
System.out.println(list3.toString());
}
static class StockInfo{
private String stockNo;
private String stockName;
private String thirdStockNo;
public String getStockNo() {
return stockNo;
}
public void setStockNo(String stockNo) {
this.stockNo = stockNo;
}
public String getStockName() {
return stockName;
}
public void setStockName(String stockName) {
this.stockName = stockName;
}
public String getThirdStockNo() {
return thirdStockNo;
}
public void setThirdStockNo(String thirdStockNo) {
this.thirdStockNo = thirdStockNo;
}
@Override
public String toString() {
return "StockInfo{" +
"stockNo='" + stockNo + '\'' +
", stockName='" + stockName + '\'' +
", thirdStockNo='" + thirdStockNo + '\'' +
'}';
}
}
static class AwardInfo{
privhttp://ate String userId;
private String stockNo;
private String thirdStockNo;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getStockNo() {
return stockNo;
}
public void setStockNo(String stockNo) {
this.stockNo = stockNo;
}
public String getThirdStockNo() {
return thirdStockNo;
}
public void setThirdStockNo(String thirdStockNo) {
this.thirdStockNo = thirdStockNo;
}
@Override
public String toString() {
return "AwardInfo{" +
"userId='" + userId + '\'' +
", stockNo='" + stockNo + '\'' +
", thirdStockNo='" + thirdStockNo + '\'' +
'}';
}
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~