如何在ArrayList中使用Comparator和Comparable?

时间:2014-03-03 06:17:45

标签: java algorithm decision-tree

我需要根据列对ArrayList进行排序。在In My ArrayList中,每行包含一些浮点值和一个字符串。每个行都使用逗号分隔。

示例:

1 row:---  4.9,5.1,2.3,1.0,classA

同样是所有行。

所以我想根据每个值对这个arraylist进行排序(基于所有行的第1个val,类似于所有行)。

这里我如何使用Comparator和Comparable?

2 个答案:

答案 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。 请参阅ComparatorCollections的文档进行排序。

祝你好运。

答案 1 :(得分:1)

您需要使用Collections#sort。它将采用您的阵列列表和比较器。

您可以创建匿名比较器,在compareTo方法中,您将通过拆分字符串获得第一个值,然后比较它们并相应地返回-1,0,1。

希望这有帮助。