如何在对象的第三列表中映射两个String类型的列表

时间:2019-06-17 13:25:31

标签: java java-stream

我想将两个String类型的List转换为Person List

第一个列表包含人员的名字,第二个列表包含姓氏 我要在“人物对象列表”中映射的对象

class Person {

    private String fistName;
    private String lastName;

    public Person(String fistName, String lastName) {
        this.setFirstName(fistName);
        this.setLastName(lastName);
    }
}


public class TestClass {

    public static void main(String[] args) {
    List<String> firstname=new ArrayList<String>();
           firstname.add("Laxmi");
           firstname.add("kaya");
           firstname.add("sapna");

           List<String> lastname=new ArrayList<String>();
           lastname.add("P");
           lastname.add("K");
           lastname.add("S");
           List<Person> emp = Stream.of(firstname,lastname).forEach(e-> new Person(e.get(0),e.get(1)));
    }
}

1 个答案:

答案 0 :(得分:2)

您可以这样做:

List<Person> res = IntStream.range(0, firstName.size())
                            .mapToObj(i -> new Person(firstName.get(i), lastName.get(i)))
                            .collect(Collectors.toList());

但这是假设两个List的大小相同

此解决方案使用IntStream::range生成两个List的索引流