【问题标题】:How to Map two List Of type String in third List of Object [closed]如何在第三个对象列表中映射两个字符串类型列表[关闭]
【发布时间】:2019-06-17 13:25:31
【问题描述】:

我想将两个字符串类型的列表转换为人员列表

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

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)));
    }
}

【问题讨论】:

  • 尝试使用IntStream 并在遍历时读取两个列表。
  • 它们的尺寸总是一样吗?这是关键点...如果不是,您应该解释如何处理这种情况...
  • 是的,它们的大小相同

标签: java java-stream


【解决方案1】:

你可以这样做:

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 生成索引流

【讨论】:

  • 这不是确切的解决方案,但您的代码帮助我获得了确切的解决方案,非常感谢您
  • 这是解决方案---> List person = IntStream.range(0, firstName.size()) .mapToObj(i -> new Person(firstName.get(i), lastName.get(i))).collect(Collectors.toList());
猜你喜欢
  • 2020-10-12
  • 2012-06-19
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
相关资源
最近更新 更多