概述
设置一个3000000长度的List,其中list里的内容为“hero-7777”的形式,即"hero-四位数",要求遍历整个list,给出该List里有多少个’‘hero-7777’’(返回数量及位置)
结果:
初始化List成功
HashMap耗时:0
共有多少个(hero-7777) 340
for循环耗时:62
共有多少个(hero-7777) 340
HashMap方法
Map的key为:’’‘hero-四位数字’,值为:该key在list中的位置
public static void Method1(List<String> testList) {
HashMap<String,List<Integer>> HeroMap = new HashMap<>(); //设置HashMap的形式,key为string类型,value为list类型(value也可以为对象)
for(int i = 0;i < testList.size();i++){
List<Integer> listHeroNum = HeroMap.get(testList.get(i).toString()); //判断是否已经存在key
if(listHeroNum == null){ //若不存在则创建List,并存进HashMap
listHeroNum = new ArrayList<>();
HeroMap.put(testList.get(i).toString(), listHeroNum);
}
listHeroNum.add(i); //在key对应的value(list)中添加该key在初始List中的位置
}
long startTime = System.currentTimeMillis();
List<Integer> resultMap = HeroMap.get("hero-7777") ; //查询key
long endTime = System.currentTimeMillis();
System.out.println("HashMap耗时:" + (endTime - startTime));
System.out.println("共有多少个(hero-7777)t" + resultMap.size());
}
for循环(迭代器)方法
public static void Method2(List<String> testList) {
int num =0;
long startTime = System.currentTimeMillis();
for(String each : testList){
if (each.equals("hero-7777"))
num++;
}
long endTime = System.currentTimeMillis();
System.out.println("for循环耗时:" + (endTime - startTime));
System.out.println("共有多少个(hero-7777)t" + num);
}
主函数
这里的随机数为1000-9999,即
((int)(Math.random()*9000)+1000)
其中手动添加的值是为了防止出现空指针,报错,不想写抛出异常,不出现7777的概率极小
public static void main(String[] args) {
int numLength = 3000000;
List<String> testList = new ArrayList<>();
for(int i = 0;i < numLength;i++)
testList.add("hero-" + ((int)(Math.random()*9000)+1000));
System.out.println("初始化List成功");
testList.add("hero-" + 7777);
Method1(testList);
System.out.println("");
Method2(testList);
最后
以上就是大力小鸽子为你收集整理的JAVA:HashMap的使用及与for循环的时间对比的全部内容,希望文章能够帮你解决JAVA:HashMap的使用及与for循环的时间对比所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复