java - 如何使用 Java 8 迭代 Java 对象列表
问题描述
如何使用Java 8迭代和遍历对象列表还需要获取不同的计数customerIds
final List<CustomerIssues> issues = customerIssues.collectList().block();
for (final CustomerIssues e : issues) {
final List<CustomerEditVO> v = e.getData();
for (final CustomerEditVO edit : v) {
System.out.println("Id " + edit.getCustomerId());
}
System.out.println("Comments " + e.getComments());
}
public class CustomerIssues {
private List<CustomerEditVO> data;
private String comments;
}
public class CustomerEditVO {
private String customerId;
private Integer units;
}
CustomerEditVO
并且CustomerIssues
是 POJO
发布请求正文 --->
{
"data":[
{
"units":"176",
"CustomerId":"122"
},
{
"units":"400",
"CustomerId":"1998"
}
],
"comments" :"Testing"
}
解决方案
我已经创建了所有给定的 POJO,并为您的查询创建了对象和列表。并且还覆盖了 toString() 方法,以便在列表输出中清楚地显示对象,并在每个操作中提取和打印列表。
注意:: 1) 需要重写 hashcode 和 equals 方法来查找 distinct() 列表并根据 customerId 计数。2)您可以使用flatMap将listOfList对象转换为单个对象列表
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
CustomerIssues issues1 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer1", 100)),"comment1");
CustomerIssues issues2 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer2", 200)),"comment2");
CustomerIssues issues3 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer3", 300)),"comment3");
CustomerIssues issues4 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer4", 400)),"comment4");
CustomerIssues issues5 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer5", 500)),"comment5");
CustomerIssues issues6 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer5", 600)),"comment6");
CustomerIssues issues7 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer5", 700)),"comment7");
CustomerIssues issues8 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer1", 800)),"comment8");
CustomerIssues issues9 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer2", 900)),"comment9");
CustomerIssues issues10 =
new CustomerIssues(Collections.singletonList(new CustomerEditVO("customer3", 1000)),"comment10");
List<CustomerIssues> customerIssuesList =
Arrays.asList(issues1,issues2,issues3,issues4,issues5,issues6,issues7,issues8,issues9,issues10);
System.out.println("Total issues:: " + customerIssuesList + "\n");
List<List<CustomerEditVO>> listOfListCustomerEditVos =
customerIssuesList.stream().map(CustomerIssues::getData).collect(Collectors.toList());
System.out.println("Total listOfListCustomerEditVos:: " + listOfListCustomerEditVos + "\n");
List<CustomerEditVO> listOfCustomerEditVos =
listOfListCustomerEditVos.stream().flatMap(Collection::stream).collect(Collectors.toList());
System.out.println("Total listOfCustomerEditVos:: " + listOfCustomerEditVos + "\n");
List<String> listOfDistinctCustomerIds = listOfCustomerEditVos.stream().map(CustomerEditVO::getCustomerId)
.distinct().collect(Collectors.toList());
System.out.println("List of distinct customer Ids:: " + listOfDistinctCustomerIds + "\n");
System.out.println("Distinct customer Ids count:: " + listOfDistinctCustomerIds.size() + "\n");
}
}
import java.util.List;
public class CustomerIssues {
private List<CustomerEditVO> data;
private String comments;
public CustomerIssues(List<CustomerEditVO> data, String comments) {
this.data = data;
this.comments = comments;
}
public List<CustomerEditVO> getData() {
return data;
}
public void setData(List<CustomerEditVO> data) {
this.data = data;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
@Override
public String toString() {
return "CustomerIssues{" +
"data=" + data +
", comments='" + comments + '\'' +
'}';
}
}
import java.util.Objects;
public class CustomerEditVO {
private String customerId;
private Integer units;
public CustomerEditVO(String customerId, Integer units) {
this.customerId = customerId;
this.units = units;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CustomerEditVO that = (CustomerEditVO) o;
return customerId.equals(that.customerId);
}
@Override
public int hashCode() {
return Objects.hash(customerId);
}
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public Integer getUnits() {
return units;
}
public void setUnits(Integer units) {
this.units = units;
}
@Override
public String toString() {
return "CustomerEditVO{" +
"customerId='" + customerId + '\'' +
", units=" + units +
'}';
}
}
输出
Total issues:: [CustomerIssues{data=[CustomerEditVO{customerId='customer1', units=100}], comments='comment1'}, CustomerIssues{data=[CustomerEditVO{customerId='customer2', units=200}], comments='comment2'}, CustomerIssues{data=[CustomerEditVO{customerId='customer3', units=300}], comments='comment3'}, CustomerIssues{data=[CustomerEditVO{customerId='customer4', units=400}], comments='comment4'}, CustomerIssues{data=[CustomerEditVO{customerId='customer5', units=500}], comments='comment5'}, CustomerIssues{data=[CustomerEditVO{customerId='customer5', units=600}], comments='comment6'}, CustomerIssues{data=[CustomerEditVO{customerId='customer5', units=700}], comments='comment7'}, CustomerIssues{data=[CustomerEditVO{customerId='customer1', units=800}], comments='comment8'}, CustomerIssues{data=[CustomerEditVO{customerId='customer2', units=900}], comments='comment9'}, CustomerIssues{data=[CustomerEditVO{customerId='customer3', units=1000}], comments='comment10'}]
Total listOfListCustomerEditVos:: [[CustomerEditVO{customerId='customer1', units=100}], [CustomerEditVO{customerId='customer2', units=200}], [CustomerEditVO{customerId='customer3', units=300}], [CustomerEditVO{customerId='customer4', units=400}], [CustomerEditVO{customerId='customer5', units=500}], [CustomerEditVO{customerId='customer5', units=600}], [CustomerEditVO{customerId='customer5', units=700}], [CustomerEditVO{customerId='customer1', units=800}], [CustomerEditVO{customerId='customer2', units=900}], [CustomerEditVO{customerId='customer3', units=1000}]]
Total listOfCustomerEditVos:: [CustomerEditVO{customerId='customer1', units=100}, CustomerEditVO{customerId='customer2', units=200}, CustomerEditVO{customerId='customer3', units=300}, CustomerEditVO{customerId='customer4', units=400}, CustomerEditVO{customerId='customer5', units=500}, CustomerEditVO{customerId='customer5', units=600}, CustomerEditVO{customerId='customer5', units=700}, CustomerEditVO{customerId='customer1', units=800}, CustomerEditVO{customerId='customer2', units=900}, CustomerEditVO{customerId='customer3', units=1000}]
List of distinct customer Ids:: [customer1, customer2, customer3, customer4, customer5]
Distinct customer Ids count:: 5
我希望这能解决你的问题。
谢谢吉达尔
推荐阅读
- javascript - 如何在字符串中找到整个子字符串?
- java - 无法在 JBoss EAP 7.2 中添加 SQL Server 数据源
- java - 如何在 Java 中实现简单音频识别 Tensorflow 教程中的三层网络
- python - 运行带有 txt 扩展名的机器人测试文件导致预期至少有 1 个参数,得到 0 错误
- c# - WPF 如何使文本框可滑动
- rpa - 使用 Microsoft UI 自动化与 UWP Windows 应用程序交互
- microsoft-graph-api - Microsoft Graph v1.0 - 转换为其他格式 - 不支持 pptm
- php - VSCode PHP智能感知数据缓存?
- java - 在 Android 29 上启用禁用 WiFi
- netflix-eureka - 如何根据请求参数在运行时修改 Zuul ServiceId?