Java判断一个对象与其他多个是否相等有无简洁表达,如:if(a.equals(b)||a.equals(c)){}.

第二个a.equals有办法省略吗
2024-10-30 17:30:37
推荐回答(2个)
回答(1):

如果这个对象是自己定义的, 可以改写对象的 equal方法,就能实现了

  @Override
    public boolean equals(Object obj) { //重写equals方法
        boolean flag = true;
        if (obj instanceof List) {
            List list = (List) obj; //传入的是多个Test对象
            for (Test test : list) {
                if (test != this) { //这个!= 可以换成对象里的具体属性对比,这里仅做示例
                    flag = false; //这里示例的意思是,必须全部相等,有一个不等,就返回false
                    break;
                }
            }
        }
        return flag;
    }
    public boolean equals(Object... obj) { //新加的此类独有方法
        boolean flag = true;
        for (Object object : obj) {
            if (object != this) { //这个!= 可以换成对象里的具体属性对比,这里仅做示例
                flag = false; //这里示例的意思是,必须全部相等,有一个不等,就返回false, 可以根据需要改成或 和 且的关系
                break;
            }
        }
        return flag;
    }
    public static void main(String[] args) {
        Test t = new Test();
        //默认继承但被重写的方法
        t.equals(Arrays.asList(new Test(), new Test()));
        //自定义的比较方法
        t.equals(new Test(), new Test());
    }

回答(2):

多个equals()比较时,可以了解下contains(),contains是是否包含的意思,左边的对象相当于是一个容器