社区
Java SE
帖子详情
java里面容器的几个问题。。
RouShan007
2012-06-05 01:00:27
1.遍历最快的容器应该是神马呢?
2.查找最快的容器是hashset吗?
3.hashset在判断是否包含某个元素的时候很快,那如果要查找并定位这个元素应该用什么容器比较合适呢?
写一个程序,之前用vector。。慢死我了。。。
现在改用了ArrayList貌似快了很多,但是还是觉得不够快呃。。。
...全文
135
9
打赏
收藏
java里面容器的几个问题。。
1.遍历最快的容器应该是神马呢? 2.查找最快的容器是hashset吗? 3.hashset在判断是否包含某个元素的时候很快,那如果要查找并定位这个元素应该用什么容器比较合适呢? 写一个程序,之前用vector。。慢死我了。。。 现在改用了ArrayList貌似快了很多,但是还是觉得不够快呃。。。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
RouShan007
2012-06-05
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
我就是这样想的阿。。。我是学JAVA一个月的快乐小菜鸟。见谅。。
[/Quote]
了解了~~~~我去试试~
现在又要去看数据集过大的问题了QAQ
头痛><
结帖啦~
无名之辈
2012-06-05
打赏
举报
回复
我就是这样想的阿。。。我是学JAVA一个月的快乐小菜鸟。见谅。。
sai123q
2012-06-05
打赏
举报
回复
之后的排序可以把hashmap转为ArrayList<Entry<String,Integer>> list
再用Collections.sort(list ,new Comparator<Entry<String,Integer>>(){......});进行排序
无名之辈
2012-06-05
打赏
举报
回复
转还成ArrayList<Entry<>> 用collections.sort 试试?
RouShan007
2012-06-05
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
回复3楼:
是这样的,我要查找的是一个string-int对,其中string没有重复的,根据string的值来找出这个string-int对,,
本来是用的hashmap<String,int>,但是我在查找完之后还需要根据int的值对整个集合进行排序,,
然后就找不到好的方法了。。。><只好舍弃hashmap改用别的。。。请问介个还有什么效率比较高的方法么,,?
不知道我问题说……
[/Quote]
这个要是想根据value来进行排序就不行了吧?
无名之辈
2012-06-05
打赏
举报
回复
回复3楼:
是这样的,我要查找的是一个string-int对,其中string没有重复的,根据string的值来找出这个string-int对,,
本来是用的hashmap<String,int>,但是我在查找完之后还需要根据int的值对整个集合进行排序,,
然后就找不到好的方法了。。。><只好舍弃hashmap改用别的。。。请问介个还有什么效率比较高的方法么,,?
不知道我问题说清楚了没。。。求解~
Map<String, Integer> users = new HashMap<String, Integer>();
users.put("小白", 1);
users.put("小黑", 3);
users.put("小明", 2);
users.put("小红", 4);
Set<Entry<String, Integer>> entrySet = users.entrySet();
System.out.println("Entry Set"+entrySet);
//用value迭代
int sum = 0;
for(Iterator<Integer> i = users.values().iterator();i.hasNext();){
int n = i.next();
sum+=n;
}
System.out.println("value的总和是:"+sum);
这个你去体一下。看看行不性。。
RouShan007
2012-06-05
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
1 jdk提供的集合类中遍历最快的应该就是ArrayList,vector是线程安全的,所以慢
2 yes(jdk提供的集合类中)
3 查找并定位,用hashmap可以,不过要增大内存开销(空间换时间),也就是put(key, value),key和value是相同的,这样 get(key)就可以得到value了
[/Quote]
是这样的,我要查找的是一个string-int对,其中string没有重复的,根据string的值来找出这个string-int对,,
本来是用的hashmap<String,int>,但是我在查找完之后还需要根据int的值对整个集合进行排序,,
然后就找不到好的方法了。。。><只好舍弃hashmap改用别的。。。请问介个还有什么效率比较高的方法么,,?
不知道我问题说清楚了没。。。求解~
ning5566
2012-06-05
打赏
举报
回复
阿宝永远是对的。。
qybao
2012-06-05
打赏
举报
回复
1 jdk提供的集合类中遍历最快的应该就是ArrayList,vector是线程安全的,所以慢
2 yes(jdk提供的集合类中)
3 查找并定位,用hashmap可以,不过要增大内存开销(空间换时间),也就是put(key, value),key和value是相同的,这样 get(key)就可以得到value了
【
Java
容器
源码】关于 HashMap 的
几个
问题
1.HashMap 底层数据结构是什么? 答:HashMap 底层是数组 + 链表 + 红黑树的数据结构 数组的主要作用是方便快速查找,时间复杂度是 O(1),默认大小是 16,数组的下标索引是通过 key 的 hashcode 计算出来的,数组元素叫做 Node 当多个 key 的 hashcode 一致,但 key 值不同时,单个 Node 就会转化成链表,链表的查询复杂度是 O(n) 当链表的长度大于等于 8 并且数组的大小超过 64 时,链表就会转化成红黑树,红黑树的查询复杂度是 O(log(n)
容器
(docker)中运行
java
需关注的
几个
小
问题
简介container: 资源隔离、平台无关, 限制cpu、mem等资源
Java
: 平台无关、Write once, run anywhere、WORA
java
不知道...
【
Java
容器
源码】关于 ArrayList 的
几个
问题
3.1 线程安全
问题
只有当 ArrayList 作为共享变量时,才会有线程安全
问题
,当 ArrayList 是方法内的局部变量时,是没有线程安全的
问题
的。 ArrayList 有线程安全
问题
的本质,是因为 ArrayList 自身的 elementData、size、modConut 在进行各种操作时,都没有加锁,而且这些变量的类型并非是可见(volatile)的,所以如果多个线程对这些变量进行操作时,可能会有值被覆盖的情况。 类注释中推荐我们使用 Collections#synchroniz
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章