亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

使用List.contains(Object object)方法判斷ArrayList是否包含一個(gè)元素對(duì)象(針對(duì)于對(duì)象的屬性值相同,但對(duì)象地址不同的情況),如果沒(méi)有重寫(xiě)List<E>的元素對(duì)象Object中的equals方法,默認(rèn)如下:

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

將導(dǎ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方法來(lái)判斷是否包含某一元素,繼續(xù)查看Object類(lèi)中的equals方法,源碼如下:

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

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

如果需要依據(jù)對(duì)象屬性值是否相同來(lái)判斷ArrayList是否包含某一對(duì)象,則需要重寫(xiě)Object的equals方法,并在equals方法中一一比較對(duì)象的每個(gè)屬性值,如:

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

到此這篇關(guān)于Java中List.contains(Object object)方法的文章就介紹到這了,更多相關(guān)Java List.contains(Object object)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼

    今天小編就為大家分享一篇關(guān)于Selenium的UI自動(dòng)化測(cè)試屏幕截圖功能實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Spring Boot 文件上傳原理解析

    Spring Boot 文件上傳原理解析

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

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

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

    一文帶你掌握J(rèn)ava?SPI的原理和實(shí)踐

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

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

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

    Java詳細(xì)講解Math和Random類(lèi)中有哪些常用方法

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

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

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

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

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

    詳解Java中的三種流程控制語(yǔ)句

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

最新評(píng)論