check对象等于存储在java中的对象中的数据

时间:2014-10-31 10:48:23

标签: java arrays

我有一个IPAdress.java类,它有一个带有int数组的构造函数来存储IP地址。我必须检查作为参数传递的对象是否等于存储在对象中的IP地址。 我试过这样的事情:

    public boolean isTheSame(IPAdress p){
        if(????) {
            return true;
        } else {
           return false;
        }
    }

我还有另一种创建对象的方法

    public static IPAdress fromString(String ipStr) {
    int[] arr = new int[4];
    String[] split = ipStr.split("\\.");
    for(int i=0;i<4;i++){
        arr[i]=Integer.parseInt(split[i]);
        System.out.println(arr[i]);
    }
    IPAdress p = new IPAdress (arr);
    return p;
}

3 个答案:

答案 0 :(得分:4)

假设您有获得内部表示的方式(例如,假设您的方法被称为asArray(),则可以使用java.util.Arrays.equals(int[], int[])):

public boolean isTheSame(IPAdress p) {
    return Arrays.equals(asArray(), p.asArray());
}

编辑:
顺便说一句,请注意,这样做的规范Java方法是覆盖eauls(Object)

@Override
public boolean equals(Object o) {
    if (!(o instanceof IPAddress) {
        return false;
    }
    return Arrays.equals(asArray(), ((IPAddress) o).asArray());
}

答案 1 :(得分:1)

摆脱您的isTheSame()方法。只需使用为同一目的而设计的内置equals方法。

覆盖IPAdress类中的equals方法,并在那里提供实现以检查相等性。例如:如果两个对象ip相同,则返回true ...

答案 2 :(得分:1)

所以你可以实现Comparable接口,你的类IPAddress将是: 公共类IPAddess实现Comparable,那么你应该实现方法

@Override 
public int compareTo(IPAddress ipAddress) {  }
@Override 
public boolean equals(Object obj) {  }
A class that overrides equals must also override hashCode.
@Override 
public int hashCode()