我需要根据列对ArrayList进行排序。在In My ArrayList中,每行包含一些浮点值和一个字符串。每个行都使用逗号分隔。
示例:
1 row:--- 4.9,5.1,2.3,1.0,classA
同样是所有行。
所以我想根据每个值对这个arraylist进行排序(基于所有行的第1个val,类似于所有行)。
这里我如何使用Comparator和Comparable?
答案 0 :(得分:2)
public class FieldComparator implements Comparator<String> {
private int column;
private int numberOfFloats;
public FieldComparator(int column, int numberOfFloats) {
this.column = column;
this.numberOfFloats = numberOfFloats;
}
@Override
public int compare(String o1, String o2) {
String[] o1Fields = o1.split(",");
String[] o2Fields = o2.split(",");
if (column < numberOfFloats) {
return new Float(o1Fields[column]).compareTo(new Float(o2Fields[column]));
} else {
return o1Fields[column].compareTo(o2Fields[column]);
}
}
}
您可以在排序或其他任何内容时将此类的实例用作Comparator
。
请参阅Comparator
和Collections
的文档进行排序。
答案 1 :(得分:1)
您需要使用Collections#sort。它将采用您的阵列列表和比较器。
您可以创建匿名比较器,在compareTo方法中,您将通过拆分字符串获得第一个值,然后比较它们并相应地返回-1,0,1。
希望这有帮助。