我知道已经有人问过类似的问题,但每次答案都围绕“使用地图代替”。
就我而言,我必须使用列表。更准确地说,我可以使用其他数据结构来处理,但信息最终会以List的形式存储。
情况如下:我有一个我将调用的对象Sequence,其中包含List我将调用的对象Phase。
除其他属性外,该Phase对象还通过以下方式获得 UUID:ObjectId
在给定的处理过程中,我必须用另一个替换包含Phase 在List<Phase>其中的现有内容。其输入是替换对象和要替换的值SequencePhasePhaseStringObjectIdPhase
我希望能够使用 Java8 做这样的事情:
public void replacePhase(Sequence sequence, Phase replacementPhase, String idPhaseToBeReplaced) {
List<Phase> phaseList = sequence.getPhaseslist();
Phase phaseToBeReplaced = phaseList.stream().filter(p -> p.getId().toString().equalsIgnoreCase(idPhaseToBeReplaced)).findFirst().orElse(null);
if (phaseToBeReplaced != null) {
phaseToBeReplaced = replacementPhase;
}
瞧,List<Phase>将会更新。
我知道这样的事情会起作用:
public void replacePhase(Sequence sequence, Phase replacementPhase, String idPhaseToBeReplaced) {
List<Phase> phaseList = sequence.getPhaseslist();
Phase phaseToBeReplaced = phaseList.stream().filter(p -> p.getId().toString().equalsIgnoreCase(idPhaseToBeReplaced)).findFirst().orElse(null);
if (phaseToBeReplaced != null) {
int i = phaseList.indexOf(phaseToBeReplaced );
phaseList.set(i, replacementPhase);
phaseToBeReplaced = replacementPhase;
}
但是,当找到具有所需 UUID 的a时,使用 afor循环似乎并不更有效。phaseListbreakPhase
所以我的问题是:有没有一种方法,使用 List 数据结构,找到基于(在本例中是唯一的)属性的对象,然后用另一个(相同类型的)替换 List 中的所述对象,同时保留顺序?最好不要迭代整个列表并使用 Java8 功能?
白衣染霜花
喵喔喔
largeQ
相关分类