我有2个List
List<Obligation>
和List<ObligationStatus>
结构如下:
public class Obligation {
private String topic;
private String status;
private String comment;
private String text;
}
和
public class ObligationStatus {
private String topic;
private String status;
private String comment;
}
status
内的 comment
和 List<Obligation>
对于所有元素,
null
都填充了topic
我想基于list
将status
的每个元素中的comment
和List<ObligationStatus>
设置为List<Obligation>
的每个元素中。
topic
// this is what i have tried, and is working fine
obList.stream().forEach(ob -> {
osList.stream().forEach(os -> {
if (ob.getTopic().equalsIgnoreCase(os.getTopic())) {
ob.setStatus(os.getStatus());
ob.setComment(os.getComment());
}
});
});
我们可以不起诉// also tried to do this without using forEach, but compilation error here
List<Obligation> result = obList.stream()
.map(ob -> osList.stream().map(os -> os.getTopic().equals(ob.getTopic())).collect(Function.identity()))
.collect(Collectors.toList());
来这样做吗?
任何信息都会有所帮助。
答案 0 :(得分:2)
由于您正在修改现有的react-native run-android
,因此无需使用react-native run-ios
。
但是,您可以使用单个List
。可以使用collect
和forEach
找到与ObligationStatus
实例匹配的Obligation
实例。
filter
答案 1 :(得分:2)
为什么要为此使用流?流不是修改对象的正确工具。
使用标准的for
循环。也使代码更易于理解。
List<Obligation> obligationList = ...;
List<ObligationStatus> statusList = ...;
// For better performance, make a map
Map<String, ObligationStatus> statusMap = new HashMap<>(statusList.size());
for (ObligationStatus status : statusList)
statusMap.put(status.getTopic(), status);
// Assign status values
for (Obligation obligation : obligationList) {
ObligationStatus status = statusMap.put(obligation.getTopic());
if (status != null) {
ob.setStatus(status.getStatus());
ob.setComment(status.getComment());
}
}
如果您想做一些 流逻辑,那么第一部分就是不错的选择:
// For better performance, make a map
Map<String, ObligationStatus> statusMap = statusList.stream()
.collect(Collectors.toMap(ObligationStatus::getTopic, Function.identity()));
更新
忽略了在比较equalsIgnoreCase(...)
值时问题代码是否topic
。如果确实需要这样做,请将HashMap
更改为不区分大小写的TreeMap
:
Map<String, ObligationStatus> statusMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
该流的版本令人费解,因此最好保持其过时。