小编DrA*_*zek的帖子

Java - 根据现有列表从流中获取新对象的列表

我需要使用lambda来生成一些新对象列表.这些新对象从现有对象继承了一些特征.由于很难描述它而不会涉及太多细节,我将使用父母及其子女的例子.

我想根据人员列表(一个人=一个孩子)生成一个孩子列表.孩子们应该只继承父母的一些特征(在这种情况下,让我们说它是肤色).

由于我有点被迫使用lambdas(但也想了解它是如何工作的),我已经尝试了以下解决方案,但我无法通过正确的映射解决问题(还没有看到类似的东西而且我正在做一个试错法.可能我也有一个制作精良的构造函数.

public class Kid {
    private Colour colour;
    private Person person;

    public Kid(Person person) {
        this.colour = person.getColour();
    }

    public List<Kid> listOfKids() {
        return people.stream()
                     .map(e -> new Kid(e));
    }
}
Run Code Online (Sandbox Code Playgroud)

java lambda arraylist java-8 java-stream

5
推荐指数
1
解决办法
73
查看次数

对一个arraylist对象的值进行排序,并在一个lambda中打印它们的多个

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

java sorting lambda arraylist java-stream

2
推荐指数
2
解决办法
62
查看次数

标签 统计

arraylist ×2

java ×2

java-stream ×2

lambda ×2

java-8 ×1

sorting ×1