Android按属性排序arraylist

Sim*_*mon 59 java sorting android 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.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

K-b*_*llo 144

你需要实现一个Comparator,例如:

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

然后按如下方式排序:

Collections.sort(fishes, new FishNameComparator());
Run Code Online (Sandbox Code Playgroud)

  • @ user1380611:如果你将它作为嵌套类实现,那么它必须是一个"静态类".我弄乱了我的例子,它应该是`实现Comparator <Fish>`. (2认同)
  • 适合我.按此处按升序排序. (2认同)

swa*_*aha 72

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

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

  • 是的,但他把它放在一个更容易访问的格式. (13认同)
  • 这一个好多了! (3认同)