我正在使用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);
答案 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);