21xrx.com
2024-09-20 01:03:01 Friday
登录
文章检索 我的文章 写文章
Java List 判断重复问题探讨
2023-06-22 04:24:08 深夜i     --     --
Java List 判断 重复 问题

Java中的List是一个非常常用的集合类,它可以存储多个元素,并且提供了丰富的操作方式。然而,对于List中的元素重复问题,却一直是一个大家关注的问题。

在List中,我们通常使用contains方法来判断一个元素是否存在于List中。但是,这只适用于对于基本类型的元素或者是对象类型的元素的引用比较,也就是说,如果一个List中存储的是自定义的对象,contains方法判断的是对象的引用是否相等,而不是对象的值是否相等,这就会导致在实际使用中出现判断错误的情况。

为了解决这个问题,我们可以通过重写自定义的对象类的equals方法,来实现对象相等的判断。比如,我们可以定义一个Person类,其中包含name和age两个属性,并且针对这两个属性重写equals方法,来实现在List中判断Person对象是否相等的功能。示例代码如下:


public class Person {

  private String name;

  private int age;

  public Person(String name, int age)

    this.name = name;

    this.age = age;

  

  @Override

  public boolean equals(Object o) {

    if (this == o) return true;

    if (o == null || getClass() != o.getClass()) return false;

    Person person = (Person) o;

    return age == person.age &&

        Objects.equals(name, person.name);

  }

  @Override

  public int hashCode() {

    return Objects.hash(name, age);

  }

}

在这个示例中,我们重写了equals方法,来实现对象的值的比较,即当比较的两个Person对象的name和age属性相等时,判断这两个对象相等。

在使用List时,我们可以通过调用contains方法,来判断List中是否存在一个指定的Person对象。示例代码如下:


List<Person> persons = new ArrayList<>();

persons.add(new Person("Tom", 18));

persons.add(new Person("Jerry", 20));

Person person = new Person("Tom", 18);

boolean contain = persons.contains(person);

System.out.println(contain);

在这个示例中,我们创建了一个名为persons的List,其中包含两个Person对象。然后,我们又创建了一个名为person的Person对象,并且与List中的第一个元素的值相同。最后,我们调用List的contains方法,并传入person对象,来判断persons中是否存在person对象。结果打印的值为true。这就说明,我们成功地通过重写equals方法,来实现了自定义类的对象在List中的判断功能。

综上所述,Java List中的重复问题,可以通过重写自定义类的equals方法来实现相等的判断。我们可以根据需要来重写equals方法和hashCode方法,来实现更加灵活、准确的对象判断。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复