1. 程式人生 > 其它 >使用HashMap和For迴圈查詢資料並且統計耗費時長

使用HashMap和For迴圈查詢資料並且統計耗費時長

技術標籤:java習題java

準備一個ArrayList其中存放3000000(三百萬個)Hero物件,其名稱是隨機的,格式是hero-[4位隨機數]
hero-3229
hero-6232
hero-9365
...
因為總數很大,所以幾乎每種都有重複,把名字叫做 hero-5555的所有物件找出來
要求使用兩種辦法來尋找
1. 不使用HashMap,直接使用for迴圈找出來,並統計花費的時間
2. 藉助HashMap,找出結果,並統計花費的時間

package ArrayList;

public class Hero {
	 String name; //姓名    
	    float hp; //血量        
	    float armor; //護甲	        
	    int moveSpeed; //移動速度	     
	    public Hero(){	         
	    }
	    public Hero(String name) {
	    	this.name=name; 	
	    }	    
	    public String toString() {
	    	return name;
	    }	    
}
package hashMap;
import java.util.ArrayList;
import java.util.List;
import ArrayList.Hero;
import java.util.HashMap;
import java.util.Date;
public class 練習 {
public static void main(String[] args) {
	List<Hero> randomHero =new ArrayList<>();
for(int i=0;i<3000000;i++) {
	int randomFigure=(int)(Math.random()*9000+1000);
	String randomName="hero-"+randomFigure;
	Hero h=new Hero(randomName);
	randomHero.add(h);	
}

Long time1=new Date().getTime();
List<Hero> getByFor=new ArrayList<>();
for(Hero heros:randomHero) {
	if(heros.equals("hero-5555")) {
		getByFor.add(heros);
	}
}
//int range1=getByFor.size();
//System.out.println("for迴圈的查詢結果為:"+range1);
System.out.println(getByFor);
System.out.println("for迴圈耗費時間:"+(Long)(new Date().getTime()-time1));

Long time2=new Date().getTime();
List<String> getByHashMap=new ArrayList<>();
HashMap<String,String> hashHero = new HashMap<>();
for(int j=0;j<3000000;j++) {
	int randomFigure=(int)(Math.random()*9000+1000);
	String randomName="hero-"+randomFigure;
	hashHero.put(randomName,randomName);
}
getByHashMap.add(hashHero.get("hero-5555"));
//int range2=getByHashMap.size();
//System.out.println("HashMap的查詢結果為:"+range2);
System.out.println(getByHashMap);
System.out.println("HashMap耗費時間:"+(Long)(new Date().getTime()-time2));

}
}

這道題沒有解決出來,不知道為什麼for迴圈查出來的結果永遠是零個,HashMap總是一個。大佬救命...........