![](/img/trans.png)
[英]Using a Bubble Sort Algorithm, Sort an arrayList of objects alphabetically
[英]sort arraylist of complex objects alphabetically
我知道Collections.sort(myArrayList)
可以在它们是字符串时按字母顺序对arraylist进行排序,但是它们何时更复杂,例如包含两个或更多变量(包括String
的数据对象。 有没有办法对它们进行排序呢?
如果没有使用Collections
的方法,那么我可以想象制作for循环或标准排序算法来查看每个对象的strings变量并在数组中移动对象的索引。
但我想知道主要是因为我忽略了关于Collections
方法的一些事情
使用函数作为比较器的第二个参数 。
Il允许您传递Comparator实例以根据您的需要进行排序。 请注意, Comparator的javadoc包含有关构建比较器的指南。
如果比较器仅在本地使用,则可以将比较器定义为匿名类。 这是一个示例,我对其中一个字段的字符串排序:
Collections.sort(groupResults, new Comparator<ProductSearchResult>() {
public int compare(ProductSearchResult result1, ProductSearchResult result2) {
return result1.product.getRsId().compareTo(result2.product.getRsId());
}
});
或者,您也可以使您的类实现Comparable接口,但这只有在您可以定义自然(明显)顺序时才有意义。
我将创建一个实现Comparator接口的内部类:
public class Car {
public double horsePower;
class CarHorsePowerComparator implements Comparator<Car> {
@Override
public int compare(Car car1, Car car2) {
return Integer.valueOf(car.horsePower).compareTo(Integer.valueOf(car2.horsePower)) }
}
}
现在,当您想通过horsePower排序您的汽车列表时:
List<Car> list = new ArrayList<Car>(myCars); //your Car list
Collections.sort(list, new CarHorsePowerComparator());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.