第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

萌新!我的代碼中是聲明一個 Tree Set 對象,結(jié)果發(fā)現(xiàn)加入了“相同”元素。請問是為什么謝謝哈~

萌新!我的代碼中是聲明一個 Tree Set 對象,結(jié)果發(fā)現(xiàn)加入了“相同”元素。請問是為什么謝謝哈~

翻翻過去那場雪 2019-08-21 19:00:06
題目描述題目來源及自己的思路我的程序里聲明了一個TreeSet對象ts,寫了一個學(xué)生類,當(dāng)學(xué)生的年齡和姓名相同時被認(rèn)為是相同元素。在ts中添加了第一個學(xué)生對象與最后一個學(xué)生對象時,使這倆個學(xué)生對象的姓名和年齡相同,打印結(jié)果發(fā)現(xiàn)這倆個元素均被輸出,ts大小為4。相關(guān)代碼importjava.util.TreeSet;publicclassTreeSetDemo{publicstaticvoidmain(String[]args){TreeSetts=newTreeSet();ts.add(newStudent("lisi02",22));ts.add(newStudent("lisi01",40));ts.add(newStudent("lisi08",19));ts.add(newStudent("lisi02",22));//thefirstelementandthelastoneareaddedtots//However,tsbelongstoaSetCollection.//SoIthinkthelastoneshouldnotbeaddedtots.//whenthesecondelementisannotated,thelastonecannotbeadded.//Canyouexplainwhy?for(Studente:ts){System.out.println(e.getName()+"\t...\t"+e.getAge());}System.out.println(ts.size());}}classStudentimplementsComparable{privateStringname;privateintage;Student(Stringname,intage){this.name=name;this.age=age;}publicStringgetName(){returnname;}publicintgetAge(){returnage;}publicintcompareTo(Objectobj){if(!(objinstanceofStudent))thrownewRuntimeException("NotStudentclass");Studentp=(Student)obj;//Whennameandagearethesame,theelementsarethesameif(this.name.equals(p.getName())&&p.getAge()==this.age){System.out.println(name+"..."+age);return0;}elsereturn1;}}你期待的結(jié)果是什么?實(shí)際看到的錯誤信息又是什么?
查看完整描述

2 回答

?
喵喵時光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個贊

你的compareTo方法返回0或1,返回0的時候新value替換舊value,返回1的時候,則作為子節(jié)點(diǎn)添加到紅黑樹的右邊。
ts.add(newStudent("lisi02",22));
ts.add(newStudent("lisi01",40));
ts.add(newStudent("lisi08",19));
ts.add(newStudent("lisi02",22));
如果代碼是這樣的,當(dāng)你添加完第三個元素lisi0819的時候,紅黑樹會進(jìn)行旋轉(zhuǎn)操作,旋轉(zhuǎn)完root節(jié)點(diǎn)是lisi0140,左子節(jié)點(diǎn)為lisi0222,右子節(jié)點(diǎn)為lisi0819,當(dāng)你添加第四個元素時候,只會和lisi0140和lisi0819進(jìn)行比較,因?yàn)槟愕腸ompareTo方法不存在-1的返回值。所以ts中會保存第四個元素。
ts.add(newStudent("lisi02",22));
//ts.add(newStudent("lisi01",40));
ts.add(newStudent("lisi08",19));
ts.add(newStudent("lisi02",22));
當(dāng)你把第二個元素注釋掉,添加完lisi0222和lisi0819之后,紅黑樹不需要旋轉(zhuǎn),root節(jié)點(diǎn)是lisi0222,右子節(jié)點(diǎn)為lisi0819,當(dāng)你添加最后一個lisi0222的時候是會和第一個lisi0222進(jìn)行比較的。所以ts中只會有兩個元素。
                            
查看完整回答
反對 回復(fù) 2019-08-21
  • 2 回答
  • 0 關(guān)注
  • 363 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號