Java中List.contains(Object object)方法使用

网友投稿 315 2022-08-05


Java中List.contains(Object object)方法使用

使用List.contains(Object object)方法判断ArrayList是否包含一个元素对象(针对于对象的属http://性值相同,但对象地址不同的情况),如果没有重写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[] UyPuOsGsa = 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 thhttp://is == 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) UyPuOsGs{

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 + "]";

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java8 List&lt;Object&gt;去掉重复对象的几种方法
下一篇:springboot 集成dubbo的步骤详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~