集的排序值
问题内容:
我正在尝试对集合中的元素进行排序,但到目前为止无法完成。这是我正在尝试执行的代码
public static void main(String [] args){
Set<String> set=new HashSet<String>();
set.add("12");
set.add("15");
set.add("5");
List<String> list=asSortedList(set);
}
public static
<T extends Comparable<? super T>> List<T> asSortedList(Collection<T> c) {
List<T> list = new ArrayList<T>(c);
Collections.sort(list);
return list;
}
但是这种方式或其他方式一直无法正常工作,因为它一直给我相同的填充顺序12,15,5
问题答案:
如果排序的字符串"12"
,"15"
并且"5"
然后"5"
是最后因为"5"
> "1"
。即字符串的自然排序不符合您的期望。
如果要将字符串存储在列表中,但按数字对其进行排序,则需要使用处理该字符串的比较器。例如
Collections.sort(list, new Comparator<String>() {
public int compare(String o1, String o2) {
Integer i1 = Integer.parseInt(o1);
Integer i2 = Integer.parseInt(o2);
return (i1 > i2 ? -1 : (i1 == i2 ? 0 : 1));
}
});
另外,我认为您在Collection
类型之间略有混淆。A HashSet
和A HashMap
是不同的东西。