首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java按对象id比较2个列表

java按对象id比较2个列表
EN

Stack Overflow用户
提问于 2021-11-11 10:25:57
回答 1查看 146关注 0票数 0

顾名思义,我有个问题。我有两个数组。一条是五条。另一个长七。

即使两个数组中的对象不同,如果数组中的对象具有相同的id,则判断为具有相同的对象。

关于javascript有很多答案,但关于java的答案似乎不多。任何有同样问题的人都可以分享解决方案。如果你有任何类似的问题,请与我分享。非常感谢。

下面是我的尝试和我的样本数据。

代码语言:javascript
运行
复制
"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个对象是。

代码语言:javascript
运行
复制
"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个,而不是相同的元素。

这是我的密码

代码语言:javascript
运行
复制
List<Casting> unMatchList = maxCastings.stream().filter(o1 -> castings.stream().noneMatch(o2 -> o2.getCharacterNo().equals(o1.getCharacterNo()))).collect(
                                        Collectors.toList());

这就回来了

错误:(737,95) java:从lambda表达式引用的局部变量必须是最终的或实际上是最终的。

EN

回答 1

Stack Overflow用户

发布于 2021-11-11 10:43:09

这是一个有用的代码示例,我用它来重现你的问题,而且它能工作.

代码语言:javascript
运行
复制
    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变量可能不是最终变量或有效终局。你可以试着宣布它是最终的,它很可能会起作用。如果不是,发布您得到的下一个错误,我们可以调试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69926696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档