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

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

java集合問題

java集合問題

慕粉4353249 2016-12-13 19:17:46
Student類代碼如下:import java.util.Arrays;import java.util.HashSet;import java.util.Set;public class Student { private String id; private String name; public Set<Course> courses; public Student(String id,String name){ this.id=id; this.name=name; this.courses = new HashSet<Course>();? //等價于HashSet courses = new HashSet();? } public Student(){ this.courses = new HashSet<Course>(); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}Test類代碼import java.util.Arrays;import java.util.Iterator;public class Test { public void TestAdd2() { Student stu = new Student(); Course[] course = { new Course("1", "大學(xué)數(shù)學(xué)"), new Course("2", "大學(xué)英語"), new Course("3", "大學(xué)語文"), new Course("4", "匯編語言") , new Course("5", "大學(xué)數(shù)學(xué)"), new Course("6", "大學(xué)英語"), new Course("7", "大學(xué)語文"), new Course("8", "匯編語言")}; stu.courses.addAll(Arrays.asList(course)); System.out.println(stu.courses.size()); } public void TestForEach2() { Student stu = new Student(); for (Course c : stu.courses) { System.out.println("課程:" + c.getId() + ":" + c.getName()); } } public void testIterator(){ Student stu = new Student(); Iterator it = stu.courses.iterator(); System.out.println("有待選課程如下:(通過迭代器訪問)"); while(it.hasNext()){ Course c = (Course)it.next(); System.out.println(c.getId()+":"+c.getName()); } } public void testRemove(){ Student stu = new Student(); Course[] course={new Course("1", "大學(xué)數(shù)學(xué)"), new Course("2", "大學(xué)英語")}; stu.courses.removeAll(Arrays.asList(course)); System.out.println("成功刪除!"); } public static void main(String[] args) { TestSet ts = new TestSet(); ts.TestAdd2(); ts.TestForEach2(); ts.testIterator(); ts.testRemove(); }}為什么Student中的courses集合沒有成功的添加數(shù)據(jù),得出courses集合長度是1,為什么???????輸出結(jié)果為:1有待選課程如下:(通過迭代器訪問)成功刪除!
查看完整描述

1 回答

已采納
?
慕粉3291149

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

你把Student stu = new Student();定義為Test類的成員變量

不然你每個方法中創(chuàng)建一個Student對象 ,操作的是不同的Student對象啊

查看完整回答
反對 回復(fù) 2016-12-13
  • 慕粉4353249
    慕粉4353249
    這個解決了,為什么testRemove()刪除集合中的元素不成功。
  • 慕粉3291149
    慕粉3291149
    不是刪除沒成功,只是你刪除之后沒有再次輸出,所以你看不到刪除后的結(jié)果,你在最后隨便加個輸出的函數(shù),如:ts.TestForEach2();
  • 慕粉3291149
    慕粉3291149
    重寫Course的equals方法 因?yàn)閞emoveAll這個方法 首先要找到其中的元素與要刪除的元素進(jìn)行比較,如果相等把它刪掉,如果不想等,繼續(xù)比較下一個元素,默認(rèn)的equals方法是比較兩個引用所指向的對象是否相同,很明顯是不同的,所以沒有刪除掉, 因此你需要重寫equals方法,右鍵點(diǎn)擊代碼 選中sourse--> general hasCode() and equals() ,點(diǎn)擊ok, 重寫后的equals方法只需要比較兩個引用的id和name是否相同就行了
點(diǎn)擊展開后面2
  • 1 回答
  • 0 關(guān)注
  • 1399 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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