一、for循环和HashMap查找内容性能比较
- 需求:
![需求](https://img-blog.csdnimg.cn/20200719162033139.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTI4OTI2Ng==,size_16,color_FFFFFF,t_70)
- 代码实现
public class HashMap_test {
public static void main(String[] args) {
ArrayList<Hero> list = new ArrayList<>();
for (int i = 0; i < 3000000; i++) {
Hero h = new Hero();
h.setName("hero-" + (int)(Math.random() * 9999 + 1000));
list.add(h);
}
forSeach(list);
System.out.println();
HashMap<String, ArrayList<Hero>> hp = new HashMap<>();
for (Hero hero : list) {
ArrayList<Hero> newList = hp.get(hero.getName());
if(newList == null) {
newList = new ArrayList<>();
hp.put(hero.getName(), newList);
}
newList.add(hero);
}
hashMapSeach(hp);
}
private static ArrayList<Hero> hashMapSeach(HashMap<String, ArrayList<Hero>> m) {
long start = System.currentTimeMillis();
ArrayList<Hero> result = m.get("hero-5555");
long end = System.currentTimeMillis();
System.out.printf("通过map查找,一共找到%d个英雄,耗时%d 毫秒%n",result.size(),end-start);
return result;
}
private static void forSeach(ArrayList<Hero> list) {
int index = 0;
long start = System.currentTimeMillis();
for (Hero hero : list) {遍历list集合
if("hero-5555".equals(hero.getName()))
index ++;
}
int times = index;
long end = System.currentTimeMillis();
System.out.printf("通过for查找,一共找到%d个英雄,耗时%d 毫秒%n",times,end - start);
}
}