java中map 为什么速度快
解决方案 »
- swfupload上传成功后,如何重置其上传个数?
- 菜鸟问初级问题:关于类之间的调用?怎样可达到复用。。
- 关于释方资源问题!
- jxl?
- struts2构建问题
- 有关struts2中配置文件的问题
- 大家帮忙看看为什么会有这个错误16:08:54,937 ERROR LazyInitializationException: could not initialize proxy - the owning Session wa
- 关于在eclipse上开发opencms7.0.0问题,请用过的朋友来看看。。
- 现在最流行的web框架是什么啊,还有今后几年的发展趋势是什么样的?希望大家给小弟指点迷津
- DataSource有问题,不让我deploy,我等着
- 写一个filter防止在地址栏乱输入地址
- 学习各种框架,开个新群 有兴趣的一起学习
根据键去获取值 自然就快了啊
根据键值对 查找 快另外给你介绍个 关于MAP的文章http://www.oracle.com/technology/global/cn/pub/articles/maps1.html
我不知道LZ是问哪方面快 不过HASHMAP速度基本应该跟ARRAYLIST一样 因为他本身也是用数组实现的 查找的话他最快(跟ARRAYLIST差不多吧)
但是我还是不知道LZ到底在问哪方面的东西..
下面是HashMap的get方法 public V get(Object key) {
if (key == null)
return getForNullKey();
int hash = hash(key.hashCode());
for (Entry<K,V> e = table[indexFor(hash, table.length)];
e != null;
e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
return e.value;
}
return null;
}
它先通过indexFor方法定位自己在table里面可能的位置,indexFor的实现是: static int indexFor(int h, int length) {
return h & (length-1);
}这里h是hash值,位与length-1后的值,就是它在table里可能的位置了。该位置可能有多个值,所以要有个for循环,不断的e = e.next,知道找到想要的e.value为止。这篇东西好像没有什么信息量。提到TreeSet和TreeMap时说用二叉树排序。这说法值得商榷。实际上是基于红黑树,实现SortedMap接口。红黑树是自平衡二叉查找树,在我看来存在的意义,不是主要用来排序,而是可以在O(log n)时间内做查找,插入和删除。
所以,“Java所有‘存储及随机访问一连串对象’的做法,array是最有效率的一种。”,这说法太笼统了。本来,那实现List<E>和Map<K,V>的类做比较,意义不大。
Map<K,V>存取以K为键,“访问一连串对象”非其所长。
嘿嘿。我喜欢Java的一个重要原因就是,java.util的存在,和学过的数据结构都联系得起来。
不像C和C++,什么都要自己来,累死。
hash取值么 map咯