java基礎班Java集合二_第1頁
java基礎班Java集合二_第2頁
java基礎班Java集合二_第3頁
java基礎班Java集合二_第4頁
java基礎班Java集合二_第5頁
免費預覽已結束,剩余17頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Java集合(二講師HashSet使用HashSet判斷重復標準HashSet判斷重復的標準;TreeSet使用;HashSetTreeSet,自定義容器--添加不重復元素(上午,之前自定義的數(shù)組或者鏈表容器類,在設計添加方法之前自定義的數(shù)組或者鏈表容器類,在設計添加方法(add方法),往里面添加數(shù)據(jù)add方法,添加之前進行判斷.如果元素重復,不添加進去;如果元素返回一個false,不讓繼續(xù)往后執(zhí)行,如果沒有重復,繼續(xù)往前執(zhí)行.添加成功,返回true;代碼實現(xiàn)HashSet引---Java中已經(jīng)提供了很多,比如具有HashSet,TreeSet;HashSet介HashSetHashSet達到的效果:不能夠添加重復的元素HashSetsize是多少HashSet ,DNA進行綜合比較。HashSet是怎樣判斷重復判斷.它的比較規(guī)則是什么呢HashSet判斷重HashSethashCodeequalstrue就表示相等(重復示意圖示意圖:hashCodeequals來進行判斷是否重復,equals值 hashCode可以看成一個對象的int值HashSetHashSetString對象,又創(chuàng)建一個HashSet對象 Student對象.在創(chuàng)建一個HashSet對象PigHashSet類作為模板,在的類里面,寫上add方法,在寫上判斷的規(guī)則.3類事物,它們的判斷規(guī)則不一樣.t,一般來說從,,方面,A綜合判斷,但是這是在生活t那現(xiàn)在要判斷兩頭豬,怎么判斷Pig類里面的一些字段,屬性進行比較判斷從上面示例來看,不管怎么設計add方法判斷重復,都不能滿足日常的需要;但是Java設計 在HashSet里面的對象,它們共同的屬性進行判斷,所以找到HashCode和equals來進行判斷.Object.但是這樣比較,覆寫Object里面的方法,按照 進行比較;在把它放到HashSet里面去,就可以拿Student類里面的規(guī)則進行比較;HashSet就滿足所有要求(Integer對象,String對象);HashSetHashCodeequals進行判斷的Integer類型代碼判斷是否重復Integeri1=newInteger(123);Integeri2=newSystem.out.println(i2.equals(i1));//trueString類型代碼判斷是否重復:Strings=“123”;所以不相等,不重復HashSet添加自定義類對驗證第二點驗證第二點:添加自定義對象,覆寫這兩個方法HashSetStudent對象Studentname,ageset,get方法②往HashSet里面添加元素;HashSetsetnewStudents1=newStudent(“”,500);Students2=newStudent(“”,500);System.out.println(set.size());輸出結果多少HashSetequalshashCode方法.StudentequalsObjectequalsObject方法里面,是比較的地址,所以這里并不相等.hashCodehashCode是否相等;但是如果從業(yè)務上來講,希望得到的是同一個,所以需要覆寫但是如果從業(yè)務上來講,希望得到的是同一個,所以需要覆寫equals和hashCode,在覆StudentequalshashCode都應該參考Student的字段值.equals方據(jù)業(yè)務對象的字段值進行比較(age,name字段值),除了比較以外;obj是否為空②objStudent,(Pig進行比較沒有意義③obj;代碼如下hashCode方hashCodeint值來表示;hashCode應該一樣, 生成的hashCode應該使用Student類里面字段值作參考.問題:這個hashCode應該怎么寫?namenameageint?hashCode方法publicint age}但是這樣寫,還存在有問題,不同的對象,hashcode不一樣,agename的時候,最后得到的hashcode一樣;這個就需要自己設計算法;但是不管怎么,equals和hashcode都應該根據(jù)字段的值進行判斷;toString方法toString方toStringeclipse快速生成方hashcodeequals方法?31,為什么定義31,應該31是被1或本身整除的數(shù),這樣就減少了拆分的可能.result,這樣就減少了重復的可能性現(xiàn)在驗證的第三點,現(xiàn)在驗證的第三點,HashSethashcodeequals進行判斷的HashSethashcodeequals來進行判斷重復或者相等equalshashCode結論結論:無論怎樣添加都只有一個元素測試情況②equals測試情況②equalsfalse,hashcode結果:添加幾個,就有幾個元素測試情況③equalstrue,hashcode結果:添加幾個,就有幾個元素結果:添加幾個,就有幾個元素驗證代碼HashSet特點小HashSet①不能添加重復元素,(hashcode②無序(添加順序,和打印出來的順序并不相同測試代碼addAllc)方法,而ArrayList多幾個方法,那HashSet少了哪些方法?里面都沒有.indexof方法,HashSet里面沒有這樣的方法TreeSet-自然排序(下午TreeSetHashSetHashSet也是一樣的;HashSetHashSet特點:不能添加重復元素,無序的TreeSet(不記錄添加順序測試代碼測試代碼StringIntegerInteger?感性認識:Integer和String不能進行比較;TreeSet里面,不能寫具體的規(guī)則;添加的元素,它們的比較規(guī)則可能不同的; 是按照一定(大小)的順序存放的);在Java里面設計一種Comparable,它是一個接口,在ComparablecompareTo(Objectobj)方法.用于比較兩個對象的大?。粌蓚€對象比較大小,結果只有Comparable接口,這樣需要比較的類,就可以調(diào)用接口里面的方法,然后在把比較的類,放到TreeSet里面,它就可以直接調(diào)用compareTo方法,進行比較;具體是怎么比較規(guī)則,再compareTo方法實現(xiàn);TreeSet并不關心,它只Comparable接口里面具有什么StudentComparablecompareTo方法,進行重復判斷;compareTo0,添加兩個值,試一下?.publicintcompareTo(Objecto){return0;}0表示相等;3種情況,-1,0,10就可以,-1,1不用去記?。粚懲曛?,測試一下,就可以了,如果你記住的,可能規(guī)則不一樣,-1,1代表的含義也不一樣;那如果比較Student學生類,應該從哪些方法進行比較? compareTo方法是誰調(diào)用?TreeSetadd的方法的時候,就進行調(diào)用;問題:如果按 逆序排序,怎么排列(1-1,-1問題:如 相等,出現(xiàn)什么情況類里面已經(jīng)肯定覆寫Comparable方法,那是按照String的規(guī)則進行比較。可以直接不管具 是怎樣比較,直接調(diào)用String類里面比較方法就可以.那 還有比較的意義嗎?所以如果 等的地方和比較 TreeSet定制排序-比較TreeSet其他內(nèi)容TreeSet自然排序等自然排序:此接口強行對實現(xiàn)它的每個類的對象進行整體排序。這種排序被稱為類的自然排序也可以這樣理解有自然排序的能力.如果要把對象往TreeSet里面放,必須是Comparable的實例.定制排StudentComparable接口,那應該怎么比較;按理Comparable接口,那應該怎么比較?那這個時候就需要借助第進行比較,比如說來一個裁判,這個裁判接收到兩個植物人,Java中,也提供這樣的裁判,(Comparator接口進行比較),那這個接口里面應該有什么有比較的方法;方法里面需要兩個參數(shù);而在TreeSet里面需要什么,需要比較Sudents的比較器.那應該怎么辦?TreeSet里面的元素進行比較;示意圖如下代碼實現(xiàn)代碼實現(xiàn)測試類方法,返回0表示相等,否則不等.,TreeSet自然排序和定制排序區(qū),第一種情況下,student類,所有人都使用這個類,在不同情況,可能每個人使用這個類的要求都不一樣;比如要求按照從大到小進行排序要求按照年,下 StudentTreesetStudent類完全不用更改,它的擴展性更強Comparable接口,作為默認比較規(guī)則,然后TreeSet集合里面.誰課后驗證:必須清楚上面兩種區(qū)別,驗證具有自然排序能力的對象(對象的類實現(xiàn)了HashSetHashSetTreeSetTreeSet特點:不重復的,無序(添加順序和打印順序不一樣);但是打印順序按照一定規(guī)則進行排序;排序可以設置自然排序和定制排序;ComparablecompareToComparatorcompare1TreeSet來存放這些學生對象,實現(xiàn)先public privateString

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論