java - 对 arraylist 对象的值进行排序并在一个 lambda 中打印多个值

标签 java sorting arraylist lambda java-stream

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

最佳答案

您可以使用Stream.sorted对其进行排序如:

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

关于java - 对 arraylist 对象的值进行排序并在一个 lambda 中打印多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53858970/

相关文章:

mysql - SQL:将多列合二为一进行排序(只输出)

java - 将 ArrayList 保存到文本文件

java - 将 Python 生成的哈希值与 Java 中的原始密码进行比较时,盐修订版无效

java - FileNotFound 错误,但我的 txt 文件与 java 文件位于同一位置

java - GridBagLayout 中的对齐方式(小程序)

java - 我正在尝试设置定时器并尝试了这个逻辑,但它没有运行?

arrays - 二分查找运行时间

c# - 在 C# 中使用冒泡排序对整数进行排序,但想要移动整个对象

java - 尝试将 int 数组拆分为 2 并使用递归方法检查它们的平均值是否相等

java - 如何创建一个 ArrayList,我也可以像 Java 一样添加项目