繁体   English   中英

如何在ArrayList中使用Comparator和Comparable?

[英]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 请参阅ComparatorCollections文档以进行排序。

祝好运。

您需要使用Collections#sort 这将需要您的数组列表和比较器。

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

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM