如何在不使用 for 循环的情况下将多个列表中的每个项目映射到 Java 中的对象
How to map each item from several lists into the object in Java without using for loops
我有 3 个描述用户的列表:状态、姓名、电子邮件。我需要将每个列表中的每个元素放入一个对象中(例如,从每个列表中获取每个第一个元素并将它们放入 UserItem 并将对象添加到列表中,因此它描述了我的第一个用户等等)。我使用以下解决方案,但我想知道是否有任何设计模式可以更有效地解决这个问题?我想避免经典的 for 循环(我试图使用流 api 找到解决方案,但徒劳无功)。
public List<UserItem> mapToObject(final List<String> statusList, final List<String> nameList, final List<String> emailList) {
for (int i = 0; i < emailList.size(); i++) {
var item = new UserItem();
item.setStatus(statusList.get(i));
item.setName(nameList.get(i));
item.setEmail(emailList.get(i));
setItem(item);
}
return getItems();
}
要使用从列表或任何类型的数组类型数据对象中收集的数据制作对象,您需要循环,因此您应该使用 for 循环、while 循环或评论中的 forEach
循环。
如果您需要一些设计模式答案,我会为每个列表使用迭代器。
public List<UserItem> mapToObject(final List<String> statusList, final List<String> nameList, final List<String> emailList) {
List<UserItem> users = new ArrayList<>();
Iterator statusIt = statusList.iterator();
Iterator nameIt = nameList.iterator();
Iterator emailIt = emailList.iterator();
while (statusIt.hasNext() && nameIt.hasNext() && emailIt.hasNext()) {
UserItem item = new UserItem();
item.setStatus((String)statusIt.next());
item.setName((String)nameIt.next());
item.setEmail((String)emailIt.next());
users.add(item);
}
return users;
}
我有 3 个描述用户的列表:状态、姓名、电子邮件。我需要将每个列表中的每个元素放入一个对象中(例如,从每个列表中获取每个第一个元素并将它们放入 UserItem 并将对象添加到列表中,因此它描述了我的第一个用户等等)。我使用以下解决方案,但我想知道是否有任何设计模式可以更有效地解决这个问题?我想避免经典的 for 循环(我试图使用流 api 找到解决方案,但徒劳无功)。
public List<UserItem> mapToObject(final List<String> statusList, final List<String> nameList, final List<String> emailList) {
for (int i = 0; i < emailList.size(); i++) {
var item = new UserItem();
item.setStatus(statusList.get(i));
item.setName(nameList.get(i));
item.setEmail(emailList.get(i));
setItem(item);
}
return getItems();
}
要使用从列表或任何类型的数组类型数据对象中收集的数据制作对象,您需要循环,因此您应该使用 for 循环、while 循环或评论中的 forEach
循环。
如果您需要一些设计模式答案,我会为每个列表使用迭代器。
public List<UserItem> mapToObject(final List<String> statusList, final List<String> nameList, final List<String> emailList) {
List<UserItem> users = new ArrayList<>();
Iterator statusIt = statusList.iterator();
Iterator nameIt = nameList.iterator();
Iterator emailIt = emailList.iterator();
while (statusIt.hasNext() && nameIt.hasNext() && emailIt.hasNext()) {
UserItem item = new UserItem();
item.setStatus((String)statusIt.next());
item.setName((String)nameIt.next());
item.setEmail((String)emailIt.next());
users.add(item);
}
return users;
}