如何从hashmap中对arraylist进行排序?

时间:2013-04-26 10:07:16

标签: android arraylist hashmap sorting

我正在使用hashmap和arraylist ...... 如何对arraylist进行排序?例如,在hashmap中,值的顺序如一,二,三,四,五 但我将这些值存储在arraylist中,顺序改为三,一,五,二,四

在我的代码groupList中,gnamelist和newList都是arraylist ... 在印刷品中,PLACES的顺序正确,但在NEWLIST PLACES上打印时订单已更改 如何按顺序排序?

我的代码

    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);

2 个答案:

答案 0 :(得分:1)

尝试

Collections.sort(newList);

修改

如果您想反向排序使用

Collections.sort(newList,Collections.reverseOrder());

重要:

如果要保留插入顺序,则需要使用TreeSet而不是HashSet,因为HashSet不保留插入顺序

答案 1 :(得分: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);