我想通过属性对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
进行排序。但我不知道该怎么做。有人知道吗?
答案 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()));