MyException - 我的异常网
当前位置:我的异常网» J2SE » ArrayList与HashMap的疑义,明天结贴

ArrayList与HashMap的疑义,明天结贴

www.MyException.Cn  网友分享于:2014-02-21  浏览:0次
ArrayList与HashMap的疑问,明天结贴

import java.util.ArrayList;
import java.util.HashMap;

public class Test {

public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<String>();
HashMap<String, String>  strMap = new HashMap<String, String>();
strMap.put("1", "tt1");
strMap.put("2", "tt2");
strMap.put("3", "tt3");
strMap.put("4", "tt4");
strList.add("1");
strList.add("2");
strList.add("3");
strList.add("4");
//两个比较哪个快 TODO
if(strMap.containsKey("4")){
System.out.println("HashMap-->"+strMap.get("4"));
}
for (String string : strList) {
if(string.equals("4")){
System.out.println("ArrayList-->"+string);
}
}

}
}



lz的java是半路出家的,希望大家告诉我结果,当然告诉原因最好
明天结贴给分

------解决方案--------------------
HashMap-->tt4
ArrayList-->4

这里面没有任何的算法,也没有什么特别的地方,只有基本的程序语句结构,所以原因就真的没有什么好说的了。
------解决方案--------------------
引用:
HashMap-->tt4
ArrayList-->4

这里面没有任何的算法,也没有什么特别的地方,只有基本的程序语句结构,所以原因就真的没有什么好说的了。


嗯,靠谱+10086...数据存放结构的问题,你可以去看看这集合的特性,是单链表还是双链表,还是树形结构...
------解决方案--------------------
我的思路是搞10w个循环,然后获取,对比下时间就可以了。。
------解决方案--------------------
这个啷个使用场景看你需求,效率上ArrayList要快。但是如果后续要快熟获取集合中的某一项这是Map就方便快捷,效率肯定比循环查找好快很多。
------解决方案--------------------
结果就不说了。很简单。

说说效率的,Java最基本的数据结构有数组和链表。
数组的特点是空间连续(大小固定)、寻址迅速,但是插入和删除时需要移动元素,所以查询快,增加删除慢。这里ArrayList就属于这类。

链表恰好相反,可动态增加或减少空间以适应新增和删除元素,但查找时只能顺着一个个节点查找,所以增加删除快,查找慢。

有没有一种结构综合了数组和链表的优点呢?当然有,那就是哈希表(虽说是综合优点,但实际上查找肯定没有数组快,插入删除没有链表快,一种折中的方式吧)。Hashmap就属于这类。

所以查询肯定是ArrayList快。
------解决方案--------------------
查询显示打印,ArrayList快!
------解决方案--------------------
ArrayList内部维护了一个数组,得到数组中的一个数据,用下标可以直接得到,很快,但是插入,删除的时候会牵扯到数组中其他数据的位移,后移(插入时)或者前补(删除时),hashMap用的是键值对,内部使用了hash算法,得到一个数据时不需要遍历集合,根据key使用hash函数计算得到数据所在位置,进而取得数据,因为这种特性map一般用于作为缓存使用,如果数据量比较大的话,我的想法是使用hashmap,他比较快。
------解决方案--------------------
那就自己研究源码,看jdk内部是如何实现的
------解决方案--------------------
论效率,hashmap稍微快一点,因为hashmap对遍历做了一些优化,先通过散列值快速定位,然后在遍历的。
------解决方案--------------------
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < 1000000; i++) {
list.add(String.valueOf(i));
}

long startList = System.nanoTime();
for (String string : list) {
if (string.equals("100000")) {
System.out.print("ArrayList-->");
long endList= System.nanoTime();
System.out.println("程序运行时间: "+(endList-startList)+"ms");
}
}

Map<String, String> map = new HashMap<String, String>();
for (int i = 0; i < 1000000; i++) {
map.put(String.valueOf(i), String.valueOf(i));
}

long startMap = System.currentTimeMillis();
if (map.containsKey("100000")) {
System.out.print("Map-->");
long endMap= System.nanoTime();
System.out.println("程序运行时间: "+(endMap-startMap)+"ms");
}
}

------解决方案--------------------
没必要关注这样的效率问题。
其实压根都不是问题。

文章评论

当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的鄙视链
程序员的鄙视链
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
那些争议最大的编程观点
那些争议最大的编程观点
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
一个程序员的时间管理
一个程序员的时间管理
如何成为一名黑客
如何成为一名黑客
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
漫画:程序员的工作
漫画:程序员的工作
我的丈夫是个程序员
我的丈夫是个程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
Java程序员必看电影
Java程序员必看电影
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员都该阅读的书
程序员都该阅读的书
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
10个调试和排错的小建议
10个调试和排错的小建议
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员必看的十大电影
程序员必看的十大电影
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
为什么程序员都是夜猫子
为什么程序员都是夜猫子
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
老程序员的下场
老程序员的下场
鲜为人知的编程真相
鲜为人知的编程真相
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
编程语言是女人
编程语言是女人
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员应该关注的一些事儿
程序员应该关注的一些事儿
 程序员的样子
程序员的样子
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
代码女神横空出世
代码女神横空出世
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有