【问题标题】:How to join two string type lists to make a list type of object?如何连接两个字符串类型列表以创建列表类型的对象?
【发布时间】:2020-07-09 07:44:58
【问题描述】:

假设我有一个类事务:

public class Transaction {

    private String tId;
    private String tStatus;

}

现在我创建另一个类 Customer:

public class Customer {

    private String cId;
    private List<Transaction> transaction;

}

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

【问题讨论】:

  • 您可以使用地图,这样您就可以确定哪个 tId 与哪个 tStatus 匹配,并且会简单得多
  • 为什么要获得单独的列表?这似乎是糟糕的设计
  • 你试过什么?这对学生来说似乎是一种练习;如果是的话,最好这么说。基本上,答案是使用 for(i=0;iTransaction 对象并将其添加到您的列表中。

标签: java arrays list arraylist java-stream


【解决方案1】:

假设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());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2014-03-16
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多