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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

輸出順序問(wèn)題

輸入的是2-1-4,輸出就變?yōu)?-1-2了,

試了好多遍都是這個(gè)樣子;

為什么?

package?com.imooc.collection;
import?java.util.List;
import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.Scanner;
public?class?SetTest?{
	//創(chuàng)建帶有泛型的List實(shí)例化對(duì)象,存放備選課程
	public?List<Course>?coursesToSelect?=?new?ArrayList<Course>();
	
	/**
	?*用于往coursesToSelect中添加課程的方法
	?*/
	
	public?void?testAdd(){
		
		Course?cr1?=?new?Course("1","數(shù)據(jù)結(jié)構(gòu)");
		coursesToSelect.add(cr1);
		Course?temp?=?(Course)coursesToSelect.get(0);
		//System.out.println("添加了課程:"?+?temp.id?+","+?temp.name);
		
		Course?cr2?=?new?Course("2","C語(yǔ)言");
		coursesToSelect.add(0,cr2);
		Course?temp2?=?(Course)coursesToSelect.get(0);
		//System.out.println("添加了課程:"?+?temp2.id?+?","?+temp2.name);
		
//		//重復(fù)添加課程1
//		coursesToSelect.add(cr1);
//		Course?temp0?=?(Course)coursesToSelect.get(2);
//		System.out.println("添加了課程:"?+?temp0.id?+","+?temp0.name);
		?
		
		Course[]?course?=?{new?Course("3","離散數(shù)學(xué)"),new?Course("4","匯編語(yǔ)言")};
		coursesToSelect.addAll(Arrays.asList(course));
		Course?temp3?=?(Course)coursesToSelect.get(3);
		//Course?temp4?=?(Course)coursesToSelect.get(4);?????
		//System.out.println("添加了兩門課程:"?+?
		//temp3.id?+","?+?temp3.name?+?";"?+?temp4.id?+?","?+?temp4.name);
		
		Course[]?course2?=?{new?Course("5","高等數(shù)學(xué)"),new?Course("6","大學(xué)英語(yǔ)")};
		coursesToSelect.addAll(2,Arrays.asList(course2));
		Course?temp5?=?(Course)coursesToSelect.get(2);
		Course?temp6?=?(Course)coursesToSelect.get(3);
		//System.out.println("添加了兩門課程:"+
		//		temp5.id?+?","?+?temp5.name?+?";"?+?temp6.id?+?","?+temp6.name);
		
	}
	
	/**
	?*?foreach循環(huán)遍歷集合內(nèi)元素,以顯示課程
	?*?@param?args
	?*/
	public?void?testForEach(){
		System.out.println("有如下課程待選(通過(guò)for?each訪問(wèn)):");
		for(Course?cr:coursesToSelect){
			???????
			System.out.println(cr.id?+?","?+?cr.name);
		}
	}
	
	public?static?void?main(String[]?args)?{
		
		SetTest?st?=?new?SetTest();
		st.testAdd();
		st.testForEach();
		//創(chuàng)建學(xué)生對(duì)象
		Student?student?=?new?Student("1","小羊");
		System.out.println("歡迎:"?+?student.name?+?"選課!");
		//創(chuàng)建一個(gè)Scanner對(duì)象
		Scanner?input?=?new?Scanner(System.in);
		
		/**
		?*?for循環(huán)3次獲取所選課程
		?*/
		
		for(int?i?=?0;i?<?3;i++){
			System.out.println("請(qǐng)輸入所選課程ID:");
			String?courseId?=?input.next();
			//for?each循環(huán)遍歷coursesToSelect,找到對(duì)應(yīng)課程
			for(Course?cr:st.coursesToSelect){
				if(cr.id.equals(courseId)){
					student.courses.add(cr);
					/**
					?*?Set中添加某個(gè)對(duì)象,無(wú)論添加多少次,
					?*?最終只會(huì)保留第一次添加的對(duì)象的引用
					?*/
					//student.courses.add(cr);
				//	student.courses.add(null);?????//可添加null但沒(méi)什么意義???
				}
			}
		}
		

		
		st.testForEachForSet(student);????

	}
	/**
	?*?for?each循環(huán)
	?*/
	public?void?testForEachForSet(Student?student){??????
		//傳遞參數(shù)(此時(shí)好比沒(méi)有main方法,故對(duì)象student還不存在)
		System.out.println("共選擇了"+?student.courses.size()?+?"門課程!");
		System.out.println("你選擇的課程如下:");
		for(Course?cr?:?student.courses){
			
			System.out.println(cr.id?+?","?+cr.name);???//呃呃為啥總是輸出固定的順序(倒序)呢??
		}
	}

}


正在回答

6 回答

?coursesToSelect.add(0,cr2);我敲的這段代碼回報(bào)黃線,知道他是沒(méi)用,但,怎么老師的沒(méi)有呢

0 回復(fù) 有任何疑惑可以回復(fù)我~

從數(shù)據(jù)結(jié)構(gòu)角度來(lái)說(shuō),其實(shí)你每次向哈希集中add一個(gè)元素,計(jì)算機(jī)都會(huì)通過(guò)哈希函數(shù)為其計(jì)算一個(gè)唯一的哈希值,并且將這個(gè)哈希值與集合中現(xiàn)有元素的哈希值比較,來(lái)保證集合中的元素不重復(fù)。同樣地,哈希集的底層存儲(chǔ)結(jié)構(gòu)中,實(shí)際上是按照元素的哈希值從小到大“有序”存儲(chǔ)的,只不過(guò)這個(gè)順序和你輸入的元素順序不一定相同,因此我們說(shuō)哈希集是無(wú)序的。但是無(wú)序不代表隨機(jī),哈希集輸出時(shí)通常是按照哈希值的大小輸出的,所以你每次輸出的結(jié)果都是一樣的。(至于視頻中老師每次輸出結(jié)果都不一樣,應(yīng)該是和編譯器還有jdk版本有關(guān)吧,不同的版本哈希算法不太一樣)

1 回復(fù) 有任何疑惑可以回復(fù)我~

無(wú)序,至于你的問(wèn)題,你輸入123,他肯定會(huì)有所改變,你還是輸入123的話,他的改變會(huì)和之前一樣。你輸入213,他的結(jié)果又變了。你輸入的每個(gè)不同的順序,他打印出來(lái)也會(huì)和之前的一樣。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

itme_BJV

求采納= =
2017-02-10 回復(fù) 有任何疑惑可以回復(fù)我~

因?yàn)镾et內(nèi)的對(duì)象是無(wú)序的,所以并不會(huì)按照輸入的順序輸出。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

暮女神 提問(wèn)者

我的意思是,每次輸出的順序都是一樣的,為什么?
2017-02-08 回復(fù) 有任何疑惑可以回復(fù)我~
#2

thomasstar 回復(fù) 暮女神 提問(wèn)者

其實(shí)任何的隨機(jī)都是偽隨機(jī),根據(jù)不同的機(jī)器,存放順序也不同(只是猜測(cè)),只要知道無(wú)序不可重復(fù)就好,知道只能用foreach和iterator遍歷就好
2017-02-09 回復(fù) 有任何疑惑可以回復(fù)我~

無(wú)序的

0 回復(fù) 有任何疑惑可以回復(fù)我~

代碼貼出來(lái)看看

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

暮女神 提問(wèn)者

貼了,大佬看一下
2017-02-08 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Java入門第三季
  • 參與學(xué)習(xí)       409767    人
  • 解答問(wèn)題       4510    個(gè)

Java中你必須懂得常用技能,不容錯(cuò)過(guò)的精彩,快來(lái)加入吧

進(jìn)入課程

輸出順序問(wèn)題

我要回答 關(guān)注問(wèn)題
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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