如何使用构造函数引用将HashMap流转换为对象

时间:2019-07-07 13:43:56

标签: java java-stream

我有一个HashMap值,我想通过将流与Cat一起使用来变成Cat::new对象。问题在于构造函数期望StringInteger,并且在流中我们有Entry<String,Integer>。有没有办法以某种方式使用Cat::new

package com.zetcode;

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;

public class ConstructorReferenceEx2 {

    public static void main(String[] args) {

        Map<String, Integer> values = new HashMap<>();
        values.put("Ollie", 3);
        values.put("Finn", 4);
        values.put("Teddy", 6);
        values.put("Jasper", 1);
        values.put("Lucky", 2);

        Stream<Cat> cats = values.entrySet().stream().map(Cat::new);

        cats.forEach(System.out::println);
    }
}

Cat的构造函数接受两个属性:

package com.zetcode;

import java.util.StringJoiner;

public class Cat {

    private String name;
    private Integer age;

    public Cat(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return new StringJoiner(", ", Cat.class.getSimpleName() + "[", "]")
                .add("name='" + name + "'")
                .add("age=" + age)
                .toString();
    }
}

0 个答案:

没有答案