使用Comparator对象进行ArrayList排序

时间:2016-02-17 08:19:33

标签: java android sorting arraylist

我有包含

的Model类
int rs;
String name;

我想得到rs> 8

ArrayList包含所有数据

  Collections.sort(arreyList, new Comparator< Model >() {

        public int compare(Model one, Model other) {

    int a = one.getrs();
    int b = other.getrs();
            if (a > 8) {
                if (a > b)
                    return -1;
                else if (a < b)
                    return 1;
                else
                    return 0;
            }
            return 0;
        }
    });

但我错了,我想添加更多过滤器,例如&gt; ,&lt; ,或者只是字符串也是。

1 个答案:

答案 0 :(得分:1)

如果您使用的是 Java 8

使用类似的东西。

 List<Model> completeModels = new ArrayList<>();

        completeModels.add(new Model(5, "Joe"));
        completeModels.add(new Model(3, "John"));
        completeModels.add(new Model(8, "Smith"));
        completeModels.add(new Model(10, "Lary"));

        List<Model> filtered = completeModels.stream().filter(u -> u.rs > 8).collect(Collectors.toList());

这将为您提供rs>8的模型列表。

更多参考google&#39; java 8过滤器示例&#39;或者浏览Stream Oracle Doc

修改

否则(如果你没有使用java 8)编写一个方法来过滤列表。我不知道其他方法。

例如:

private List<Model> getFilteredList(List<Model> completeModels) {

    List<Model> filtered = new ArrayList<>();

    for (Model m : completeModels) {
        if (m.rs > 8) {
            filtered.add(m);
        }
    }

    return filtered;
}