Test_集合_HashMap

一、for循环和HashMap查找内容性能比较

  1. 需求:
    需求
  2. 代码实现
public class HashMap_test {
	public static void main(String[] args) {
		
		ArrayList<Hero> list = new ArrayList<>();
		for (int i = 0; i < 3000000; i++) {//初始化list集合,把3000000个英雄对象装进去,名字为四位数随机数字
			Hero h = new Hero();
			h.setName("hero-" + (int)(Math.random() * 9999 + 1000));
			list.add(h);
		}
		
		forSeach(list);//调用for循环查找的功能
		System.out.println();
		//HashMap查找
		HashMap<String, ArrayList<Hero>> hp = new HashMap<>();
		//初始化HashMap,键的类型为字符串,值类型为ArrayList集合
		for (Hero hero : list) {//遍历list集合
			ArrayList<Hero> newList = hp.get(hero.getName());
			//创建newList集合,指向HashMap遍历这个键对应的值
			if(newList == null) {//如果这个值是空的
				newList = new ArrayList<>();//就创建newList对象
			hp.put(hero.getName(), newList);
			}//并添加到HashMap中
			newList.add(hero);//如果不为空直接把Hero对象添加到newList集合中
		}
		hashMapSeach(hp);
	}

	private static ArrayList<Hero> hashMapSeach(HashMap<String, ArrayList<Hero>> m) {
		long start = System.currentTimeMillis();
		ArrayList<Hero> result = m.get("hero-5555");//result指向针对这个键查看对应的ArrayList集合
		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 ++;//index 自增一次
		}
		int times = index;
		long end = System.currentTimeMillis();
		System.out.printf("通过for查找,一共找到%d个英雄,耗时%d 毫秒%n",times,end - start);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值