日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小议map排序问题

發(fā)布時間:2024/8/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小议map排序问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
小議map排序問題

map有序無序?如果說有序, 這個順序是怎么定義的? 安裝put的先后順序嗎? 還是被put元素的內(nèi)容呢?

?

經(jīng)觀察,應該是后者,跟put先后順序無關, 跟內(nèi)部實現(xiàn)有關(可能是hash排序的, 非大小排序)

public static void main(String[] args) {// asfd(); // TODO Auto-generated method stub Map<String, String> map = new ConcurrentHashMap<String, String>(); // map.put("10.167.240.78", "aa"); // map.put("10.167.240.61", "bb"); // map.put("10.167.240.46", "dd"); // map.put("10.167.240.54", "cc");map.put("205", "b"); map.put("101", "b"); map.put("201", "b");for (int i = 10; i > 0; i--) { // map.put(i+"", Math.random()+""); }System.out.println(map);}

  

?


打印 :{201=b, 101=b, 205=b}


如果是
map.put("205", "b");
map.put("101", "b");
map.put("201", "b");
(把205改成25)
則打印:
{201=b, 101=b, 25=b}

?

?

而且發(fā)現(xiàn)ConcurrentHashMap和HashMap的表現(xiàn)也不同 —— 內(nèi)部的hash算法還有細節(jié)上的區(qū)別嗎?

?

?

===============

?

參照http://kenkao.iteye.com/blog/1812283

?

List按對象進入的順序保存對象,不做排序或編輯操作。Set對每個對象只接受一次,并使用自己內(nèi)部的排序方法(通常,你只關心某個元素是否屬于Set,而不關心它的順序--否則應該使用List)。Map同樣對每個元素保存一份,但這是基于"鍵"的,Map也有內(nèi)置的排序,因而不關心元素添加的順序。如果添加元素的順序?qū)δ愫苤匾?#xff0c;應該使用 LinkedHashSet或者LinkedHashMap.

?

?小結(jié):

1 List按對象進入的順序保存對象, Set、 Map不是它們各有內(nèi)部排序算法

2 List容許有重復值, Set不容許; Map不容許有重復key值。

3 List、Set、 Map各自的不同實現(xiàn),效率有所不同,側(cè)重不同

4對于存儲于Set內(nèi)的元素x,我們需要對x重寫其hashCode方法——我們在重寫對象的equals方法時,必須重寫hashCode——就是說,equals不等,則hashCode不同,反之亦然

?

—— 這個Set 或者 HashSet好像用的很少吧,我工作這么久都沒用過一樣。。。

一般就是ArrayList、HashMap。。。?

?

posted on 2014-02-15 12:16 CanntBelieve 閱讀(...) 評論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/FlyAway2013/p/3550431.html

總結(jié)

以上是生活随笔為你收集整理的小议map排序问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。