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

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

老生常談的Map輸出還是有序問題???

為什么我一樣輸入ID:1、2、......、9,都到9了,而且value值我還特意打亂了輸入,結(jié)果運(yùn)行出來的順序還是有序的。。。而講師只輸入了3個(gè)key值就已經(jīng)表現(xiàn)出了亂序。。。這究竟是怎么回事?

http://img1.sycdn.imooc.com//5a6ab3790001a4e903160578.jpg

public?class?MapTest?{
	Scanner?input=new?Scanner(System.in);
	//創(chuàng)建Map對象,用來承裝學(xué)生類型對象
	public?Map<String,Student>?students;
	
	//在構(gòu)造器中初始化students屬性
	public?MapTest(){
		this.students=new?HashMap<String,Student>();
	}

	//測試“添加”方法:接收輸入學(xué)生ID,檢測是否被占用;若未被占用,則提示輸入姓名并創(chuàng)建新學(xué)生對象,添加到students中
	public?void?testPut()?{
		int?a=0;
		while(a<9)?{
			System.out.println("請輸入學(xué)生ID:");
			String?id=input.next();
			//判斷ID是否被占用
			Student?st=students.get(id);??????????//此處若students中不存在此ID,則返回null值。
			if(st==null)?{
				System.out.println("請輸入學(xué)生姓名:");
				String?name=input.next();
				//創(chuàng)建新的學(xué)生對象
				Student?newStudent=new?Student(id,name);
				//通過調(diào)用students的put()方法,添加“ID-學(xué)生”映射
				students.put(id,?newStudent);
				//if條件為“st==null",所以此處不能替換為“st.name",因?yàn)閟t中可能包含空指針。
				System.out.println("成功添加學(xué)生:"+newStudent.name);
				a++;
			}else?{
				System.out.println("您輸入的ID已被占用!");
			}
		}
	}
	
	//測試Map(students)的keySet()方法
	public?void?keySet()?{
		//通過keySet方法,返回students中所有“鍵”的集合
		Set<String>?key=students.keySet();
		System.out.println("總共有"+students.size()+"個(gè)學(xué)生");
		
		for(String?stuId:key)?{
			Student?st=students.get(stuId);
			if(st!=null)?{
				System.out.println("學(xué)生:"+st.name);
			}
		}
	}
	
	//測試刪除Map中的映射
	public?void?testRemove()?{
		//判斷是否有對應(yīng)的學(xué)生對象		
		while(true)?{
			System.out.println("請輸入要?jiǎng)h除的學(xué)生的ID:");
			String?rmId=input.next();
			Student?st=students.get(rmId);
			if(st==null)?{
				System.out.println("輸入的ID不存在!");
				continue;
			}
			students.remove(rmId);
			System.out.println("學(xué)生:"+st.name+"已刪除!");
			break;
		}
	}
	
	//通過entrySet方法來遍歷Map
	public?void?testEntrySet()?{
		//通過entrySet方法返回Map中的所有鍵值對
		Set<Entry<String,Student>>?entrySet=students.entrySet();
		for(Entry<String,Student>?entry:entrySet)?{
			System.out.println("取得鍵:"+entry.getKey());
			System.out.println("對應(yīng)的值為:"+entry.getValue().name);
		}
	}
	
	//利用put()方法修改Map中已有的映射
	public?void?testModify()?{
		System.out.println("請輸入要修改的學(xué)生ID:");
		while(true)?{
			String?id=input.next();
			//從students中查找該學(xué)生ID對應(yīng)的學(xué)生對象
			Student?st=students.get(id);
			if(st==null)?{
				System.out.println("該ID不存在,請重新輸入!");
			}else?{
				System.out.println("當(dāng)前ID所對應(yīng)的學(xué)生為:"+st.name);
				System.out.println("請輸入新的學(xué)生姓名:");
				String?newName=input.next();
				Student?newSt=new?Student(id,newName);
				students.put(id,?newSt);
				System.out.println("修改成功!");
				break;
			}
		}
	}
	
	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		MapTest?mt=new?MapTest();
		mt.testPut();
		mt.keySet();
//		mt.testRemove();
		mt.testModify();
		mt.testEntrySet();
	}
}

正在回答

5 回答

好像會(huì)根據(jù)鍵值進(jìn)行排序

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

qq_宮湦_03802224 提問者

唉,不清楚
2018-01-30 回復(fù) 有任何疑惑可以回復(fù)我~

我引用下別人的話:在Java中無序指的是Java語言沒有規(guī)定某個(gè)容器按什么順序遍歷,在不同的Java虛擬機(jī)上對某個(gè)容器的實(shí)現(xiàn)是不一樣,比如說運(yùn)行在Windows和Linux上的Java虛擬機(jī)對HashSet的遍歷順序可能不太一樣,但對同一種虛擬機(jī)來說遍歷輸出都是一樣的。而不是我們?nèi)粘K斫獾?無序就是亂序"的意思。


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

同樣是有序的,無論如何打亂,都會(huì)按照輸入的順序輸出,,,

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

map是數(shù)組和鏈表的形式,數(shù)組是有序的(便于查詢,速度快),鏈表是無序的(利于插入和刪除)

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

用了你的代碼,也是有序,會(huì)不會(huì)是java更新后有這個(gè)特性,不影響

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

舉報(bào)

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

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

進(jìn)入課程

老生常談的Map輸出還是有序問題???

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

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

幫助反饋 APP下載

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

公眾號(hào)

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