其他分享
首页 > 其他分享> > 使用HashMap和For循环查找数据并且统计耗费时长

使用HashMap和For循环查找数据并且统计耗费时长

作者:互联网

准备一个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总是一个。大佬救命...........

标签:Hero,HashMap,ArrayList,查找,hero,new,public,耗费
来源: https://blog.csdn.net/qq_44624536/article/details/113818947