【发布时间】:2019-05-01 12:56:35
【问题描述】:
我有一个包含其他对象列表的对象,其中包含另一个对象列表。很像 DTO。 在这些对象中,有另一个类型的对象列表,如果该对象包含特定的字符串,我想在其中删除该元素。
例如
CustomerDTO customerDTO = CustomerTransformer.transformCustomer(custom);
List<InfoDTO> info = customerDTO.getInfo();
info(infoDTO -> {
List<MoreDTO> d = infoDTO.getMore();
for (MoreDTO moreDTO : d) {
List<ChannelDTO> channels = MoreDTO.getChannels();
for (ChannelDTO cdto : contentChannels) {
if ("apple".equals(cdto.getId())) {
moreDTO.getChannels().remove(cdto);
}
}
}
});
但这看起来确实效率不高,并且可能会更改空指针?有没有更好的写法?使用流和在流中使用过滤器会有帮助吗?
我是 Java 新手。
【问题讨论】:
-
这不是关于效率,而是关于正确性。您的代码将因 ConcurrentModificationException 而失败。在做出假设之前,您确实需要测试您的代码。
-
我猜你需要为此使用
Iterator。 -
查看我的答案,如果您需要帮助,请告诉我
标签: java arrays java-8 java-stream