欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年04月08日 11:21:20   作者:亦楓Blog  
本文主要介紹了Java中List.contains(Object?object)方法,使用List.contains(Object?object)方法判斷ArrayList是否包含一個元素對象,感興趣的可以了解一下

使用List.contains(Object object)方法判斷ArrayList是否包含一個元素對象(針對于對象的屬性值相同,但對象地址不同的情況),如果沒有重寫List<E>的元素對象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方法依據(jù)Object的equals方法來判斷是否包含某一元素,繼續(xù)查看Object類中的equals方法,源碼如下:

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

所以,使用“==”比較對象的地址,如果是同一對象即地址相同的情況下,才會返回true,而對于對象屬性值相同但地址不同的不同對象,始終返回false!

如果需要依據(jù)對象屬性值是否相同來判斷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)方法的文章就介紹到這了,更多相關Java List.contains(Object object)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java 控制流程、大數(shù)值、數(shù)組

    Java 控制流程、大數(shù)值、數(shù)組

    這篇文章主要給大家介紹的是Java 控制流程、大數(shù)值、數(shù)組的一些相關自來哦,感興趣的小伙伴可以參考下面文章的具體內(nèi)容,希望文章對你有所幫助
    2021-10-10
  • 關于Selenium的UI自動化測試屏幕截圖功能實例代碼

    關于Selenium的UI自動化測試屏幕截圖功能實例代碼

    今天小編就為大家分享一篇關于Selenium的UI自動化測試屏幕截圖功能實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Spring Boot 文件上傳原理解析

    Spring Boot 文件上傳原理解析

    Spring Boot 文件上傳原理其實就是Spring MVC,因為這部分工作是Spring MVC做的而不是Spring Boot,那么,SpringMVC又是怎么處理文件上傳這個過程的呢?下面通過本文給大家詳細介紹下,一起看看吧
    2018-03-03
  • 使用Springboot整合GridFS實現(xiàn)文件操作

    使用Springboot整合GridFS實現(xiàn)文件操作

    這篇文章主要介紹了使用Springboot整合GridFS實現(xiàn)文件操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 一文帶你掌握Java?SPI的原理和實踐

    一文帶你掌握Java?SPI的原理和實踐

    在Java中,我們經(jīng)常會提到面向接口編程,這樣減少了模塊之間的耦合,更加靈活,Java?SPI?(Service?Provider?Interface)就提供了這樣的機制,本文就來講講它的原理與具體使用吧
    2023-05-05
  • Java?Request獲取請求頭數(shù)據(jù)實例詳解

    Java?Request獲取請求頭數(shù)據(jù)實例詳解

    在開發(fā)中我們經(jīng)常需要獲取用戶IP地址,通過地址來實現(xiàn)一些功能,下面這篇文章主要給大家介紹了關于Java中Request獲取請求頭數(shù)據(jù)的相關資料,需要的朋友可以參考下
    2024-01-01
  • Java詳細講解Math和Random類中有哪些常用方法

    Java詳細講解Math和Random類中有哪些常用方法

    Math類位于java.lang包中,包含很多用于科學計算的類方法,這些方法可以直接通過類名調(diào)用。Random類獲取隨機數(shù),位于java.util包中,本篇帶你了解它們的常用方法
    2022-05-05
  • JPA多數(shù)據(jù)源分布式事務處理方案

    JPA多數(shù)據(jù)源分布式事務處理方案

    這篇文章主要為大家介紹了JPA多數(shù)據(jù)源分布式事務處理的兩種事務方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • java中 String和StringBuffer的區(qū)別實例詳解

    java中 String和StringBuffer的區(qū)別實例詳解

    這篇文章主要介紹了java中 String和StringBuffer的區(qū)別實例詳解的相關資料,一個小的例子,來測試String和StringBuffer在時間和空間使用上的差別,需要的朋友可以參考下
    2017-04-04
  • 詳解Java中的三種流程控制語句

    詳解Java中的三種流程控制語句

    這篇文章主要介紹了Java中常用的三種流程控制語句的使用,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2022-04-04

最新評論