使用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