集的排序值


问题内容

我正在尝试对集合中的元素进行排序,但到目前为止无法完成。这是我正在尝试执行的代码

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是不同的东西。