繁体   English   中英

按字母顺序排列复杂对象的arraylist

[英]sort arraylist of complex objects alphabetically

我知道Collections.sort(myArrayList)可以在它们是字符串时按字母顺序对arraylist进行排序,但是它们何时更复杂,例如包含两个或更多变量(包括String的数据对象。 有没有办法对它们进行排序呢?

如果没有使用Collections的方法,那么我可以想象制作for循环或标准排序算法来查看每个对象的strings变量并在数组中移动对象的索引。

但我想知道主要是因为我忽略了关于Collections方法的一些事情

使用函数作为比较器的第二个参数

Il允许您传递Comparator实例以根据您的需要进行排序。 请注意, Comparatorjavadoc包含有关构建比较器的指南。

如果比较器仅在本地使用,则可以将比较器定义为匿名类。 这是一个示例,我对其中一个字段的字符串排序:

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.

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