[英]How to use Comparator and Comparable in ArrayList?
我需要根据列对ArrayList进行排序。也就是说,在My ArrayList中,每一行都包含一些浮点值和一个字符串。每一个都用逗号分隔。
例:
1 row:--- 4.9,5.1,2.3,1.0,classA
同样,所有行。
所以我想基于每个值(基于所有行的第一个值,类似所有行)对该数组列表进行排序。
在这里,我如何使用比较器和可比性?
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
文档以进行排序。
祝好运。
您需要使用Collections#sort 。 这将需要您的数组列表和比较器。
您可以创建匿名Comparator,并在其compareTo方法中通过拆分两个字符串来获取第一个值,然后比较它们并相应地返回-1,0,1。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.