日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

在使用集合中的contains(),要根据实际情况改写集合中对象的equals(Object obj)方法------改写List集合中equals(Object obj)的方法

發(fā)布時(shí)間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在使用集合中的contains(),要根据实际情况改写集合中对象的equals(Object obj)方法------改写List集合中equals(Object obj)的方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如標(biāo)題,解釋都在代碼注釋中

主方法及目的

···

package cn.com.testCollection; import java.util.Iterator; import java.util.Scanner;/**此類是用于測(cè)試List集合中的contains()方法* contains()方法,是用于判斷某個(gè)對(duì)象是否屬于該集合中的元素* 它的原理是:* 1.遍歷出該集合中的每一個(gè)元素,* 2.調(diào)用每一個(gè)元素的equals()方法,來(lái)判斷該對(duì)象是否與該遍歷出元素是否是同一個(gè)* 注意,這里說(shuō)的是同一個(gè)對(duì)象,但在實(shí)際的場(chǎng)景中,是要判斷對(duì)象中的內(nèi)容是否一致,* 比如一個(gè)班級(jí)中,來(lái)了一個(gè)學(xué)生叫花花牛,需要給他定一個(gè)以姓名為準(zhǔn)的稱號(hào),如果班級(jí)里* 已經(jīng)有一個(gè)花花牛了,那么他的稱號(hào)只能是 花花牛一,* 顯然,equals()方法是比較對(duì)象的地址是否一樣,顯然不行,應(yīng)該比較對(duì)象的的name的內(nèi)容* 那么,這里就需要 改寫 對(duì)象的 equals()方法了。詳見(jiàn) Student類中 重寫的equals()方法。* @author SZQ**/ public class TestColContains { static StudentCol sc = new StudentCol(); public static Scanner input; public static void main(String[] args) {Student st1 = new Student(1, "花花牛");Student st2 = new Student(2, "小米");Student st3 = new Student(3, "李磊");Student st4 = new Student(4, "lucy");Student st6 = new Student(6, "花花牛");sc.studentSet.add(st1);sc.studentSet.add(st2);sc.studentSet.add(st3);sc.studentSet.add(st4);System.out.println("班級(jí)中已有的學(xué)生分別是");for(Student ss : sc.studentSet){System.out.println("學(xué)生是:"+ss.name);}System.out.println("請(qǐng)輸入新學(xué)生的姓名:");input = new Scanner(System.in);String stuName = input.next();Student newStu = new Student(5, stuName);Iterator it = sc.studentSet.iterator();int count = 0;while(it.hasNext()){if(it.next().equals(newStu)){count++;}}if(count > 0)System.out.println("班級(jí)里已經(jīng)存在了"+count+"個(gè)名字叫做"+newStu.name+"的同學(xué)");System.out.println("新學(xué)生的稱號(hào)是"+newStu.name+count);main(args); }

}

···

Student類,改寫equals()方法

···

package cn.com.testCollection; public class Student { public int id; public String name;public Student(int id,String name) {// TODO Auto-generated constructor stubthis.id = id;this.name = name; } /** *重寫equals()方法**/ @Override public boolean equals(Object obj){//首先判斷是不是同一個(gè)對(duì)象if(this == obj){return true;}//判斷是不是null, 注意,傳入的參數(shù)可以為null,但是調(diào)用方法的對(duì)象不能null,//否則會(huì)引起 空指針異常,也就不能調(diào)用改寫的equals方法了。if(obj == null){return false;}if(!(obj instanceof Student)){return false;}/** 既然不是同一個(gè)對(duì)象,不是null ,同時(shí)他也屬于Student類的一個(gè)實(shí)例* 那么接下來(lái)只需要 判斷它的內(nèi)容----姓名 ,是不是一樣 ,就行了*///先轉(zhuǎn)換為 Student類的類型。Student st = (Student) obj;//判斷name是不是空的//如果判斷多個(gè)屬性,比如id一樣也作為判斷條件,只需將下面的代碼再比葫//蘆畫瓢寫一遍就行了if(this.name == null){if(st.name == null){return true;}else{return false;}}else{if(this.name.equals(st.name)){return true;}else{return false;}} }

}
···

存放學(xué)生類集合的類

···

package cn.com.testCollection;import java.util.ArrayList; import java.util.List;public class StudentCol {public List<Student> studentList;public StudentCol() {// TODO Auto-generated constructor stubthis.studentList = new ArrayList<Student>();}}

···

可以試一試,將Student類中的equals()方法,注釋掉,看看什么情況,其實(shí),在Eclips中,提供了便捷的方法幫助我們重寫equals方法,大家可以查查找找。

總結(jié)

以上是生活随笔為你收集整理的在使用集合中的contains(),要根据实际情况改写集合中对象的equals(Object obj)方法------改写List集合中equals(Object obj)的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。