Как объединить два списка строковых типов, чтобы создать объект типа списка? - PullRequest
2 голосов
/ 28 марта 2020

Предположим, у меня есть класс Transaction:

public class Transaction {

    private String tId;
    private String tStatus;

}

Теперь я создаю другой класс Customer:

public class Customer {

    private String cId;
    private List<Transaction> transaction;

}

Теперь, если я получу список строк типа tIds и отдельный список строк tStatus, как мне объединить эти два списка, чтобы создать список типов транзакций в Java?

1 Ответ

4 голосов
/ 28 марта 2020

Предполагая, что 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)));
}

Или возможно более элегантно, используйте поток вместо al oop:

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