Gunakan kaedah List.contains(Object object) untuk menentukan sama ada ArrayList mengandungi objek elemen (untuk kes di mana nilai atribut objek adalah sama tetapi alamat objek berbeza), jika objek elemen Objek Senarai
@Override public boolean equals(Object o) { // TODO Auto-generated method stub return super.equals(o); }
akan menyebabkan kaedah mengandungi sentiasa mengembalikan palsu.
Lihat kod sumber kaedah mengandungi ArrayList seperti berikut:
/** * 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; }
Dapat dilihat bahawa kaedah mengandungi menentukan sama ada elemen tertentu dimasukkan berdasarkan kaedah yang sama dengan Object untuk melihat kaedah sama dalam kelas Objek Kod sumber adalah seperti berikut:
public boolean equals(Object o) { return this == o; }
Oleh itu, gunakan "==" untuk membandingkan alamat objek yang sama, iaitu alamat adalah sama, benar akan dikembalikan Untuk objek yang berbeza dengan nilai atribut objek yang sama tetapi alamat yang berbeza , sentiasa mengembalikan palsu!
Jika anda perlu menentukan sama ada ArrayList mengandungi objek berdasarkan sama ada nilai atribut objek adalah sama, anda perlu mengatasi kaedah yang sama bagi Objek dan membandingkan setiap nilai atribut objek satu demi satu dalam kaedah sama, seperti:
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 + "]"; } }
Atas ialah kandungan terperinci Cara menggunakan kaedah List.contains(Object object) dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!