英文:
to find the index number from a list based on the condition
问题
如何找到列表中满足条件的对象的索引号
int index = list.indexOf(list.stream().filter(a -> a.getInfo().getDetails().getIndicator().equals("3")));
list.remove(index);
如果指示器为3,则需要获取索引值。
英文:
How to find the index number of an object in list satisfying the condition
int index = list.indexOf(list.stream().filter(a-> a.getInfo().getDetails().getIndicator().equals("3")));
list.remove(index)
I need to get the index value if the Indicator is 3
答案1
得分: 2
因为你在问题代码中使用了list.remove(index)
,如果你想要移除满足条件的项目,就不需要获取索引然后按索引移除,只需要使用 removeIf(...)
:
list.removeIf(a -> a.getInfo().getDetails().getIndicator().equals("3"));
英文:
Since you included list.remove(index)
in the question code, if you want to remove an item that satisfies a condition, don't get the index then remove by index, just use removeIf(...)
:
list.removeIf(a -> a.getInfo().getDetails().getIndicator().equals("3"));
答案2
得分: 1
你可以使用 IntStream
来根据索引迭代列表,并获取满足条件的对象的索引。
IntStream.range(0, list.size())
.filter(i -> list.get(i).getInfo().getDetails().getIndicator().equals("3"))
.findFirst()
.orElse(-1); // 默认返回 -1
英文:
You can use IntStream
to iterate the list based on index and get the index of satisfying the condition object
IntStream.range(0,list.size())
.filter(i->list.get(i).getInfo().getDetails().getIndicator().equals("3"))
.findFirst()
.orElse(-1) // return -1 as default
答案3
得分: 0
用老式迭代器可以:
- 在迭代时移除匹配的元素
- 移除所有
for (Iterator<YourType> it = items.iterator(); it.hasNext(); ) {
YourType element = it.next();
if (element.getInfo().getDetails().getIndicator().equals("3"))
it.remove();
}
英文:
With an oldschool iterator you can:
-
remove matching elements while iterating
-
remove all
for(Iterator<YourType> it=items.iterator();it.hasNext();) { YourType element=it.next(); if(element.getInfo().getDetails().getIndicator().equals("3")) it.remove(); }
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论