首页 > 解决方案 > 对数组列表对象的值进行排序并在一个 lambda 中打印其中的多个

问题描述

我的目标是打印出四个值中的两个值 - 名称(字符串)和头发颜色(枚举) - 描述数组列表中的某个对象。问题在于按名称按字母顺序对打印列表进行排序。这一切都必须在一个 lambda 中。

我坚持只打印出来,没有排序。我已经设置了覆盖,但由于我还在学习,我似乎无法让它工作。

public void printAllNamesColours() {
        people.stream()
            .forEach(n->System.out.println(n.getName() + " " + n.getColour()));
    }

@Override
public int compareTo(Person person) {
        int ret = name.compareToIgnoreCase(person.name);
        if (ret == 0) {
            ret = colour.compareTo(person.colour);
        }
        if (ret == 0) {
            ret = age - person.age;
        }
        return ret;
    }

标签: javasortingarraylistlambdajava-stream

解决方案


您可以使用以下方式对其进行排序Stream.sorted

people.stream()
      .sorted() // considering your `compareTo` implementation
      .forEach(n -> System.out.println(n.getName() + " " + n.getColour()));

推荐阅读