首页 > 解决方案 > 如何连接两个字符串类型列表以创建列表类型的对象?

问题描述

假设我有一个类事务:

public class Transaction {

    private String tId;
    private String tStatus;

}

现在我创建另一个类客户:

public class Customer {

    private String cId;
    private List<Transaction> transaction;

}

现在,如果我得到一个 tIds 的字符串列表和一个单独的 tStatus 字符串列表,我如何合并这两个列表以在 Java 中创建事务类型列表?

标签: javaarrayslistarraylistjava-stream

解决方案


假设Transaction有一个来自这两个字符串的构造函数,并且假设列表具有相同的长度,您可以遍历它们并创建一个列表Transactions

List<String> tIds = /* probably a method argument? */
List<String> tStatuses = /* probably a method argument? */
if (tIds.size() != tStatuses.size()) {
    throw new IllegalArgumentException("list sizes don't match");
}

List<Transaction> result = new ArrayList<>(tIds.size());
for (int i = 0; i < tIds.size(); ++i) {
    result.add(new Transaction(tIds.get(i), tStatuses.get(i)));
}

或者,可以说更优雅,使用流而不是循环:

List<Transaction> result =
   IntStream.range(0, tIds.size())
            .mapToObj(i -> new Transaction(tIds.get(i), tStatuses.get(i)))
            .collect(Collectors.toList());

推荐阅读