顾名思义,我有个问题。我有两个数组。一条是五条。另一个长七。
即使两个数组中的对象不同,如果数组中的对象具有相同的id,则判断为具有相同的对象。
关于javascript有很多答案,但关于java的答案似乎不多。任何有同样问题的人都可以分享解决方案。如果你有任何类似的问题,请与我分享。非常感谢。
下面是我的尝试和我的样本数据。
"maxCastings"
[
{
"characterNo": "100121",
"characterName": "막심 드 윈터",
"manNo": "",
"manName": "",
},
{
"characterNo": "100122",
"characterName": "댄버스 부인",
"manNo": "3727",
"manName": "옥주현",
},
{
"characterNo": "100123",
"characterName": "나",
"manNo": "29655",
"manName": "이지혜",
},
{
"characterNo": "100124",
"characterName": "잭 파벨",
"manNo": "4202",
"manName": "이창용",
},
{
"characterNo": "100125",
"characterName": "반 호퍼 부인",
"manNo": "40282",
"manName": "한유란",
},
{
"characterNo": "100126",
"characterName": "베아트리체",
"manNo": "3543",
"manName": "류수화",
},
{
"characterNo": "100128",
"characterName": "프랭크 크롤리",
"manNo": "42618",
"manName": "임정모",
},
{
"characterNo": "100130",
"characterName": "줄리앙 대령",
"manNo": "31476",
"manName": "김현웅",
}
]列表中的5个对象是。
"castings"
[
{
"characterNo": "100121",
"characterName": "막심 드 윈터",
"manName": "에녹"
},
{
"characterNo": "100122",
"characterName": "댄버스 부인",
"manName": "옥주현"
},
{
"characterNo": "100123",
"characterName": "나",
"manName": "임혜영"
},
{
"characterNo": "100124",
"characterName": "잭 파벨",
"manName": "최민철"
},
{
"characterNo": "100125",
"characterName": "반 호퍼 부인",
"manName": "김지선"
},
{
"characterNo": "100126",
"characterName": "베아트리체",
"manName": "김경호"
}
]如果manName是不同的,但characterNo是相同的,我想检查这两个数组是否具有相同的元素。
我想要的是7个中的2个,而不是相同的元素。
这是我的密码
List<Casting> unMatchList = maxCastings.stream().filter(o1 -> castings.stream().noneMatch(o2 -> o2.getCharacterNo().equals(o1.getCharacterNo()))).collect(
Collectors.toList());这就回来了
错误:(737,95) java:从lambda表达式引用的局部变量必须是最终的或实际上是最终的。
发布于 2021-11-11 10:43:09
这是一个有用的代码示例,我用它来重现你的问题,而且它能工作.
class Data {
Integer characterNo;
String characterName;
String manName;
public Data(Integer characterNo, String characterName, String manName) {
this.characterNo = characterNo;
this.characterName = characterName;
this.manName = manName;
}
public Integer getCharacterNo() {
return characterNo;
}
public void setCharacterNo(Integer characterNo) {
this.characterNo = characterNo;
}
public String getCharacterName() {
return characterName;
}
public void setCharacterName(String characterName) {
this.characterName = characterName;
}
public String getManName() {
return manName;
}
public void setManName(String manName) {
this.manName = manName;
}
@Override
public String toString() {
return "Data{" +
"characterNo=" + characterNo +
", characterName='" + characterName + '\'' +
", manName='" + manName + '\'' +
'}';
}
}
@Test
void getNonMatchingList() {
var a1 = List.of(
new Data(1,"x","a"),
new Data(2,"x","b")
);
var a2 = List.of(
new Data(1,"x","a")
);
var unMatchList = a1.stream().filter(o1 -> a2.stream().noneMatch(o2 -> o2.getCharacterNo().equals(o1.getCharacterNo()))).collect(
Collectors.toList());
unMatchList.forEach( it -> System.out.println(it));
}所以,你的代码似乎工作正常..。它唯一的问题是,5Array变量可能不是最终变量或有效终局。你可以试着宣布它是最终的,它很可能会起作用。如果不是,发布您得到的下一个错误,我们可以调试。
https://stackoverflow.com/questions/69926696
复制相似问题