在列表中查找具有相同字段的对象[重复]

问题描述 投票:0回答:1

无法找到在列表中查找具有相同值的字段的对象的最佳方法。

例如我有一个物体

public class User {

    private String name;
    private String countryCode;
    private String info;
    private String code;

}

就我而言,列表中有很多对象。其中一些具有相同的价值观。 如果我有相同的“代码”值或超过 2 个其他值(例如“名称”和“国家代码”),我需要保存它们。

就像我有一样

User user1 = new User("1","DE","1234","BAD");
User user2 = new User("2","FR","4567","GOOD");
User user3 = new User("3","PL","5647","BAD");

我需要保存user1和user3

或者如果我有

User user1 = new User("1","DE","1234","BAD");
User user2 = new User("2","FR","4567","GOOD");
User user3 = new User("3","DE","1234","SOSO");

我需要保存user1和user3。 所以我需要将其涵盖到案例中。

提前谢谢大家!

java spring arraylist collections java-stream
1个回答
1
投票

您可以尝试定义一个比较方法,该方法迭代 User 类的每个变量,如果它们相同则返回 true,如果不同则返回 false。例如:

class User{
    int[] variables;
    boolean compare(User othUser){
        for( int i = 0; i < variables.length; i++){
            if(variables[i] == othUser.variables[i]) return true;
        }
        return false;
    }
}

然后只需 user1.compare(user2) 就会返回您正在查找的值。

如果您的变量未存储在数组中,您只需单独调用每个变量即可获得相同的输出和运行时间。

要了解更多信息,Comparator 和 Comparable 接口是一个很好的起点。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.