ArrayList的contains方法并不能做它该做的事情。
创始人
2024-09-14 08:00:10
0

ArrayList的contains方法在判断元素是否存在时,是通过调用元素的equals方法来进行比较的。然而,如果我们没有重写equals方法,那么默认情况下,它只是使用了Object类的equals方法,即比较的是对象的引用是否相等。

因此,如果我们希望contains方法能够按照我们期望的方式来判断元素是否存在,我们需要重写元素的equals方法,并根据实际需求定义比较的逻辑。

以下是一个示例代码,演示了如何重写equals方法来实现自定义的比较逻辑:

class Person {
    private String name;
    private int age;

    // 构造函数和其他方法省略

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }
}

public class Main {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        list.add(new Person("Alice", 20));
        list.add(new Person("Bob", 25));

        Person person = new Person("Alice", 20);
        System.out.println(list.contains(person)); // 输出 true
    }
}

在上面的示例中,我们重写了Person类的equals方法,根据name和age两个属性来判断两个对象是否相等。这样,当我们使用contains方法时,它就能按照我们自定义的逻辑来判断元素是否存在了。

相关内容

热门资讯

最新技巧“wepoker透视真... 您好:wepoker透视真的假的这款游戏是可以开挂的,软件加【添加微信客服136704302】确实是...
我来教教你“wepoker透视... 您好:wepoker透视辅助挂有游戏亮点的软件,软件加客服确实是有挂的,很多玩家在这款游戏中打牌都会...
玩家必备教程“wepoker辅... >>您好:wepoker辅助软件怎么用确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别...
最新技巧“微扑克辅助器案例”开... 您好,微扑克辅助器案例这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在...
分享认知“wpk有没有透视”开... 无需打开直接搜索;操作使用教程:分享认知“wpk有没有透视”开挂辅助挂(透视)解密教程1、界面简单,...
一起来讨论“wepoker可以... 一起来讨论“wepoker可以开挂透视吗”开挂辅助下载(透视)必赢方法是一款可以让一直输的玩家,快速...
科技通报“wpk开挂挂是真的吗... 无需打开直接搜索;操作使用教程:科技通报“wpk开挂挂是真的吗”开挂辅助脚本(透视)wpk教程1、界...
大家学习交流“wepoker私... >>您好:wepoker私人局怎么设置抽水确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
今日科普“怎么避免wpk透视挂... 您好,怎么避免wpk透视挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
实测分享“wepoker透视真... >>您好:wepoker透视真的吗软件加扣扣群确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户...