我在List
Integer
转换为List
String
之后尝试对Integer
个List
进行排序。它给了我这个错误:
找不到合适的排序方法(List,StringToInteger.CustomComparator)
这是我的代码:
public class StringToInteger {
public static void main(String args) {
List<String> strList = new ArrayList<String>();
strList.add("34");
strList.add("14");
strList.add("42");
strList.add("24");
List<String> resultList = getIntegerArray(strList);
System.out.println("before sorting"+resultList);
Collections.sort(resultList, new CustomComparator());
System.out.println("after sorting"+resultList);
}
private static List<Integer> getIntegerArray(List<String> stringArray) {
List<Integer> result = new ArrayList<Integer>();
for(String stringValue : stringArray) {
try {
//Convert String to Integer, and store it into integer array list.
result.add(Integer.parseInt(stringValue));
} catch(NumberFormatException nfe) {
//System.out.println("Could not parse " + nfe);
Log.w("NumberFormat", "Parsing failed! " + stringValue + " can not be an integer");
}
}
return result;
}
class CustomComparator implements Comparator<List<Integer>> {
@Override
public int compare(List<Integer> o1, List<Integer> o2) {
return o1.get(1).compareTo(o2.get(1));
}
}
}
答案 0 :(得分:1)
您正在比较CustomComperator
中的整数列表,而您应该比较整数。
您也可以使用
Collections.sort(resultList);
或
Collections.reverse(resultList);
答案 1 :(得分:1)
List<String> resultList = getIntegerArray(strList);
将此行更改为
List<Integer> resultList = getIntegerArray(strList);
和这个
class CustomComparator implements Comparator<List<Integer>> {
@Override
public int compare(List<Integer> o1, List<Integer> o2) {
return o1.get(1).compareTo(o2.get(1));
}
}
到
class CustomComparator implements Comparator<Integer> {
@Override
public int compare(Integer>o1, Integer o2) {
return o1.compareTo(o2);
}
}
答案 2 :(得分:1)
阅读sort
方法原型!
public static <T> void sort(List<T> list, Comparator<? super T> c) {
你的代码那样做:
Collections.sort(resultList, new CustomComparator());
这是:
Collections.sort(List<String>, Comparator<List<Integer>>);
getIntegerArray
返回List<Integer>
。您的编译器应该警告您或抛出错误。Comparator<? super String>
。 Comparator<List<Integer>>
不一个Comparator<? super String>
。对于其他人,其他答案完成了我的答案。