2

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

在我的代码 groupList 中,gnamelist 和 newList 都是 arraylist ...在打印 sts 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);
4

2 回答 2

1

尝试

Collections.sort(newList);

编辑:

如果你想反向排序使用这个

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

重要的:

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

于 2013-04-26T10:10:20.427 回答
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);
于 2013-04-26T10:48:10.720 回答