Get the App
SLTechnology News&Howtos  ›  Development  › 

How to use the List.contains (Object object) method in Java

Shulou Source: shulou.com Published: 2022-06-01 00:23:34 09月21日 Update

本篇内容主要讲解"Java中List.contains(Object object)方法怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java中List.contains(Object object)方法怎么使用"吧!

使用List.contains(Object object)方法判断ArrayList是否包含一个元素对象(针对于对象的属性值相同,但对象地址不同的情况),如果没有重写List的元素对象Object中的equals方法,默认如下:

@Override public boolean equals(Object o) { // TODO Auto-generated method stub return super.equals(o); }

将导致contains方法始终返回false。

查看ArrayList的contains方法的源码如下:

/** * Searches this {@code ArrayList} for the specified object. * * @param object * the object to search for. * @return {@code true} if {@code object} is an element of this * {@code ArrayList}, {@code false} otherwise */ @Override public boolean contains(Object object) { Object[] a = array; int s = size; if (object != null) { for (int i = 0; i < s; i++) { if (object.equals(a[i])) { return true; } } } else { for (int i = 0; i < s; i++) { if (a[i] == null) { return true; } } } return false; }

可以看出,contains方法依据Object的equals方法来判断是否包含某一元素,继续查看Object类中的equals方法,源码如下:

public boolean equals(Object o) { return this == o; }

所以,使用"=="比较对象的地址,如果是同一对象即地址相同的情况下,才会返回true,而对于对象属性值相同但地址不同的不同对象,始终返回false!

如果需要依据对象属性值是否相同来判断ArrayList是否包含某一对象,则需要重写Object的equals方法,并在equals方法中一一比较对象的每个属性值,如:

package com.feng.lejuan.entity; public class QuestionInfo { private String questionId; private String answerId; private String subQuestionId; private String result; public QuestionInfo() { super(); } public QuestionInfo(String questionId, String answerId, String subQuestionId, String result) { super(); this.questionId = questionId; this.answerId = answerId; this.subQuestionId = subQuestionId; this.result = result; } public String getQuestionId() { return questionId; } public void setQuestionId(String questionId) { this.questionId = questionId; } public String getAnswerId() { return answerId; } public void setAnswerId(String answerId) { this.answerId = answerId; } public String getSubQuestionId() { return subQuestionId; } public void setSubQuestionId(String subQuestionId) { this.subQuestionId = subQuestionId; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } @Override public boolean equals(Object o) { if (o instanceof QuestionInfo) { QuestionInfo question = (QuestionInfo) o; return this.questionId.equals(question.questionId) && this.subQuestionId.equals(question.subQuestionId) && this.answerId.equals(question.answerId) && this.result.equals(question.result); } return super.equals(o); } @Override public String toString() { return "QuestionInfo [questionId=" + questionId + ", answerId=" + answerId + ", subQuestionId=" + subQuestionId + ", result=" + result + "]"; }}到此,相信大家对"Java中List.contains(Object object)方法怎么使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

Tags: Method object same address attribute different element content situation source code learning practical deeper interest practical practical easy to operate more friends website Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Huawei Shulou Technology OPPO Reno Microsoft macOS