??xml version="1.0" encoding="utf-8" standalone="yes"?>肉色丝袜一区二区,日韩欧美一级,亚洲一区精品在线http://www.aygfsteel.com/iceblock/zh-cnFri, 20 Jun 2025 01:48:31 GMTFri, 20 Jun 2025 01:48:31 GMT60HashMap,LinkedHashMap,TreeMapQHashTable的区?http://www.aygfsteel.com/iceblock/archive/2011/10/21/361694.htmliceblockiceblockFri, 21 Oct 2011 01:58:00 GMThttp://www.aygfsteel.com/iceblock/archive/2011/10/21/361694.htmlhttp://www.aygfsteel.com/iceblock/comments/361694.htmlhttp://www.aygfsteel.com/iceblock/archive/2011/10/21/361694.html#Feedback0http://www.aygfsteel.com/iceblock/comments/commentRss/361694.htmlhttp://www.aygfsteel.com/iceblock/services/trackbacks/361694.htmljava为数据结构中的映定义了一个接口java.util.Map;它有四个实现c?分别是HashMap Hashtable LinkedHashMap 和TreeMap
Map主要用于存储健值对Q根据键得到|因此不允讔R重复(重复了覆盖了),但允许值重复?br />----------------------------------------------------------------
HashMap 是一个最常用的Map,它根据键的HashCode 值存储数?Ҏ键可以直接获取它的|h很快的访问速度Q遍历时Q取得数据的序是完全随机的。HashMap最多只允许一条记录的键ؓNull;允许多条记录的gؓ Null;
HashMap不支持线E的同步Q即M时刻可以有多个线E同时写HashMap;可能会导致数据的不一致。如果需要同步,可以?Collections的synchronizedMapҎ使HashMaph同步的能力,或者用ConcurrentHashMap?br />
-----------------------------------------------------------------
Hashtable?HashMapcM,它承自Dictionaryc,不同的是:它不允许记录的键或者gؓI?它支持线E的同步Q即M时刻只有一个线E能写Hashtable,因此也导致了 Hashtable在写入时会比较慢?br />
-----------------------------------------------------------------
LinkedHashMap保存了记录的插入序Q在用Iterator遍历LinkedHashMapӞ先得到的记录肯定是先插入?也可以在构造时用带参数Q按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外Q当HashMap定w很大Q实际数据较时Q遍历v来可能会比LinkedHashMap慢,因ؓLinkedHashMap的遍历速度只和实际数据有关Q和定w无关Q而HashMap的遍历速度和他的容量有兟?br />-----------------------------------------------------------------
TreeMap实现SortMap接口Q能够把它保存的记录Ҏ键排?默认是按键值的升序排序Q也可以指定排序的比较器Q当用Iterator 遍历TreeMapӞ得到的记录是排过序的?br />------------------------------------------------------------------------------------------
ȝQ?br />
一般情况下Q我们用的最多的是HashMap,HashMap里面存入的键值对在取出的时候是随机?它根据键的HashCode值存储数?Ҏ键可以直接获取它的|h很快的访问速度。在Map 中插入、删除和定位元素QHashMap 是最好的选择?br />TreeMap取出来的是排序后的键值对。但如果您要按自焉序或自定义顺序遍历键Q那么TreeMap会更好?br />LinkedHashMap 是HashMap的一个子c,如果需要输出的序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列Q像q接池中可以应用?/div>


iceblock 2011-10-21 09:58 发表评论
]]>
Vector ArrayList LinkedList 区别http://www.aygfsteel.com/iceblock/archive/2011/10/18/361522.htmliceblockiceblockTue, 18 Oct 2011 06:39:00 GMThttp://www.aygfsteel.com/iceblock/archive/2011/10/18/361522.htmlhttp://www.aygfsteel.com/iceblock/comments/361522.htmlhttp://www.aygfsteel.com/iceblock/archive/2011/10/18/361522.html#Feedback0http://www.aygfsteel.com/iceblock/comments/commentRss/361522.htmlhttp://www.aygfsteel.com/iceblock/services/trackbacks/361522.html同步?/strong>
Vector是同步的。这个类中的一些方法保证了Vector中的对象是线E安全的。而ArrayList则是异步的,因此ArrayList中的对象q不是线E安全的。因为同步的要求会媄响执行的效率Q所以如果你不需要线E安全的集合那么使用ArrayList是一个很好的选择Q这样可以避免由于同步带来的不必要的性能开销?br />---------------------------------------------------------------------------------------------------------------------
数据增长
从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控刉合中的对象。当你向q两U类型中增加元素的时候,如果元素的数目超Z内部数组目前的长度它们都需要扩展内部数l的长度QVector~省情况下自动增长原来一倍的数组长度QArrayList是原来的50%,所以最后你获得的这个集合所占的I间L比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因ؓ你可以通过讄集合的初始化大小来避免不必要的资源开销?br />--------------------------------------------------------------------------------------------------------------------
使用模式
在ArrayList和Vector中,从一个指定的位置Q通过索引Q查找数据或是在集合的末֢加、移除一个元素所p的时间是一LQ这个时间我们用O(1)表示。但是,如果在集合的其他位置增加或移除元素那么花费的旉会呈UŞ增长QO(n-i)Q其中n代表集合中元素的个数Qi代表元素增加或移除元素的索引位置。ؓ什么会q样呢?以ؓ在进行上q操作的时候集合中Wi和第i个元素之后的所有元素都要执行位Uȝ操作。这一切意味着什么呢Q?br />q意味着Q你只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是其他操作Q你最好选择其他的集合操作类。比如,LinkList集合cd增加或移除集合中M位置的元素所p的时间都是一L?O(1)Q但它在索引一个元素的使用~比较慢QO(i),其中i是烦引的位置.使用ArrayList也很ҎQ因Z可以单的使用索引来代替创建iterator对象的操作。LinkList也会为每个插入的元素创徏对象Q所有你要明白它也会带来额外的开销?br />-------------------------------------------------------------------------------------------------------------
最后,在《Practical Java》一书中Peter Haggar使用一个简单的数组QArrayQ来代替Vector或ArrayList。尤其是对于执行效率要求高的E序更应如此。因Z用数l?Array)避免了同步、额外的Ҏ调用和不必要的重新分配空间的操作?br />


iceblock 2011-10-18 14:39 发表评论
]]>
String StringBuffer StringBuilder区别http://www.aygfsteel.com/iceblock/archive/2011/10/18/361519.htmliceblockiceblockTue, 18 Oct 2011 05:05:00 GMThttp://www.aygfsteel.com/iceblock/archive/2011/10/18/361519.htmlhttp://www.aygfsteel.com/iceblock/comments/361519.htmlhttp://www.aygfsteel.com/iceblock/archive/2011/10/18/361519.html#Feedback0http://www.aygfsteel.com/iceblock/comments/commentRss/361519.htmlhttp://www.aygfsteel.com/iceblock/services/trackbacks/361519.html
String 是不可变的对? 因此在每ơ对 String cdq行改变的时候其实都{同于生成了一个新?String 对象Q然后将指针指向新的String 对象Q所以经常改变内容的字符串最好不要用 String。因为每ơ生成对象都会对pȝ性能产生影响Q特别当内存中无引用对象多了以后Q?JVM ?GC ׃开始工作,那速度是一定会相当慢的?/div>
-------------------------------------------------------------------------------------
StringBuffer 每次l果都会?StringBuffer 对象本nq行操作Q而不是生成新的对象,再改变对象引用。线E安?/div>
-----------------------------------------------------------------------------------------
StringBuilder 用在字符串缓冲区被单个线E用的时?   U程不安?br />
------------------------------------------------------------------------------------------

1.如果要操作少量的数据?= String

2.单线E操作字W串~冲?下操作大量数?= StringBuilder

3.多线E操作字W串~冲?下操作大量数?= StringBuffer



iceblock 2011-10-18 13:05 发表评论
]]>d使h明智Q读诗人灵UQ演人精密,哲理使h深刻Qu理学使h庄重Q逻辑修辞使h善辩http://www.aygfsteel.com/iceblock/archive/2011/08/16/356646.htmliceblockiceblockTue, 16 Aug 2011 08:58:00 GMThttp://www.aygfsteel.com/iceblock/archive/2011/08/16/356646.htmlhttp://www.aygfsteel.com/iceblock/comments/356646.htmlhttp://www.aygfsteel.com/iceblock/archive/2011/08/16/356646.html#Feedback0http://www.aygfsteel.com/iceblock/comments/commentRss/356646.htmlhttp://www.aygfsteel.com/iceblock/services/trackbacks/356646.html用一句话来自勉:“d使h明智Q读诗人灵UQ演人精密,哲理使h深刻Qu理学使h庄重Q逻辑修辞使h善辩”Q?img src ="http://www.aygfsteel.com/iceblock/aggbug/356646.html" width = "1" height = "1" />

iceblock 2011-08-16 16:58 发表评论
]]>
վ֩ģ壺 | ֶ| | | | | ԭ| ƽ| | | | | ³| | ˿| ˮ| | ̫| ɽ| | | | | | | пǰ| Դ| Ͷ| | ī񹤿| | ϳ| ̨| Դ| ϲ| | | | ¡| | ɽ|