Android按属性排序arraylist

时间:2012-06-01 15:31:26

标签: java android sorting arraylist

我想通过属性对ArrayList进行排序。这是我的代码......

public class FishDB{

    public static Object Fish;
    public ArrayList<Fish> list = new ArrayList<Fish>();

    public class Fish{
        String name;
        int length;
        String LatinName;
        //etc. 

        public Vis (String name) {
            this.name = name;
        }
    }

    public FishDB() {
        Fish fish;

        fish = new Fish("Shark");
        fish.length = 200;
        fish.LatinName = "Carcharodon Carcharias";

        fish = new Fish("Rainbow Trout");
        fish.length = 80;
        fish.LatinName = "Oncorhynchus Mykiss";

        //etc.
        }
    }
}

现在我想要通过一个属性(例如另一个活动中的ArrayList)对此latinname进行排序。但我不知道该怎么做。有人知道吗?

4 个答案:

答案 0 :(得分:141)

您需要实现Comparator,例如:

public class FishNameComparator implements Comparator<Fish>
{
    public int compare(Fish left, Fish right) {
        return left.name.compareTo(right.name);
    }
}

然后按照这样排序:

Collections.sort(fishes, new FishNameComparator());

答案 1 :(得分:62)

您可以通过以下代码执行此操作:

Collections.sort(list, new Comparator<Fish>() {
    public int compare(Fish o1, Fish o2) {
        return o1.name.compareTo(o2.name);
    }
});

答案 2 :(得分:1)

科林代码

list.sortWith(Comparator { o1, o2 -> o1.name!!.compareTo(o2.name!!) })

答案 3 :(得分:0)

实现同一目标有多种选择。 最简单的解决方案是利用 Java 8 特性:

Collections.sort(Fish, (t1, t2) -> t1.name().compareTo(t2.name()));