作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
希望你一切都好。
我遇到过一些涉及列表操作的场景。我们期望对该列表进行以下数据映射并避免任何 NPE。这可以通过 for 循环和内部查询任何数据来完成,这些数据可能包含另一个列表,等等。考虑到性能,处理数据的最佳方法是什么?维护 for 循环会更好,还是我们可以使用选项和 lambda 进行改进,或者至少匹配相同的性能?
例如:
class MyObject {
//Constructors
private int id;
private List<MySecondObject> objList;
private String data;
//getters, setters
}
class MySecondObject {
//Constructors
private int id;
private String desc;
//getters, setters
}
public class MyClass {
public static void main(String args[]) {
List<MyObject> objList = getList();
List<String> descList = new ArrayList<>();
if(objList == null){
return;
}
for(MyObject o : objList) {
if(o.getData() == null || o.getData().isEmpty()){
continue;
}
if(o.getObjList() != null) {
for(MySecondObject s : o.getObjList()) {
if(s.getDesc() != null && !s.getDesc().isEmpty()) {
descList.add(s.getDesc());
}
}
}
}
}
}
谢谢
祝你有美好的一天。
最佳答案
这正是您在代码中所做的,但使用Streams:
public static List<String> createDescList(List<MyObject> objList) {
return Optional.ofNullable(objList).orElse(Collections.emptyList()).stream()
.filter(Objects::nonNull)
.filter(obj -> isNotEmpty(obj.getData()))
.map(MyObject::getObjList)
.flatMap(List::stream)
.filter(Objects::nonNull)
.filter(obj -> isNotEmpty(obj.getDesc()))
.map(MySecondObject::getDesc)
.collect(Collectors.toList());
}
// TODO can be replaced with org.apache.commons.lang3.StringUtils.isNotEmpty() or isNotBlank()
private static boolean isNotEmpty(String str) {
return str != null && !str.isEmpty();
}
关于java - 可选列表和以下映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50567658/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!