2013-04-26 15 views
2

即時通訊使用hashmap和arraylist ... 如何排列數組列表?例如)在哈希值的數量是一樣,二,三,四,五 ,但我存儲在arraylist這些值的順序改變像三,一,五,二,四如何從hashmap中排列數組列表?

在我的代碼groupList,gnamelist和newList都是arraylist ... 在印刷sts地方是正確的順序,但在新名單地點打印訂單改變 如何按順序排序?

我的代碼

HashMap<String, String> map = new HashMap<String, String>(); 
     // adding each child node to HashMap key => value 
     map.put(TAG_PLACE, gname); 
     map.put(TAG_HOTEL,lname); 
    // adding HashList to ArrayList 
     groupList.add(map); 
     gnamelist.add(gname); 
     System.out.println("PLACES" + gnamelist); 
     List<String> newList = new ArrayList<String>(new LinkedHashSet<String>(gnamelist)); 
     Collections.sort(newList,Collections.reverseOrder()); 
     System.out.println("NEWLIST PLACES" + newList); 

回答

1

HashSet的將存儲元素無序的方式,並且可能是您的元素重新排序的罪魁禍首。

List<String> newList = new ArrayList<String>(new HashSet<String>(gnamelist)); 

還要考慮使用LinkedHashMap/LinkedHashSet,它保留添加到它的元素的排序。

或者嘗試以下操作:

gnamelist.add(gname); 
System.out.println("PLACES" + gnamelist); 
List<String> newList = new ArrayList<String>(); 
newList.addAll(gnamelist); 
+0

我已經使用LinkedHashSet仍然沒有得到正確的順序... – 2013-04-26 10:58:50

+0

看到我的代碼上面編輯 – 2013-04-26 11:04:17

+0

你在那裏???仍然沒有得到訂購.. – 2013-04-26 11:06:21

1

嘗試

Collections.sort(newList); 

編輯:

如果你想在反向利用這個

排序3210
Collections.sort(newList,Collections.reverseOrder()); 

重要:

,如果你想保留插入順序,你需要使用TreeSet,而不是HashSet的作爲HashSet中不保留插入順序

+0

不,我沒有得到它爲了,現在它改變了一些其他命令狀四,三,二,五,一個 – 2013-04-26 10:21:34

+0

@OneManArmy檢查我的編輯 – Pragnani 2013-04-26 10:34:36

+0

現在還它不按順序,現在它的其他順序..如何使用TreeSet – 2013-04-26 10:38:51