英文:
Get index where the element matches using lightweight stream API stream
问题
我有以下的流,并且正在使用这个库来处理流:
String itemDescValue = Stream.of(dtaArr).filter(e ->
e.getRateUID().equals(rateUID))
.map(myObject::getItemDesc)
.findFirst()
.orElse(null);
我想要运行一个流来获取匹配值的索引。我知道可以使用一个简单的for循环来实现:
for (int i = 0; i < dtaArr.size(); i++) {
if (dtaArr.get(i).getItemDesc().equals(itemDescValue)) {
// 在这里执行操作
}
}
请问如何使用轻量级流API来获取匹配值的索引呢?
英文:
I have the following stream and I am using this library for streams:
String itemDescValue = Stream.of(dtaArr).filter(e ->
e.getRateUID().equals(rateUID))
.map(myObject::getItemDesc)
.findFirst()
.orElse(null);
I would like to run a stream to get the index on when the value matches. I know I can achieve it using a simple for loop:
for(int i=0 ;i < dtaArr.size(); i++)
{
if(dtaArr.get(i).getItemDesc().equals(itemDescValue)){
//do stuff here
}
}
How would I get the index on when the value matches using the lightweight stream API.
答案1
得分: 1
使用 IntStream.range
:
OptionalInt idx =
IntStream.range(0, dtaArr.size())
.filter(i -> dta.get(i).getRateUID().equals(rateUID))
.findFirst();
英文:
Use IntStream.range
:
OptionalInt idx =
IntStream.range(0, dtaArr.size())
.filter(i -> dta.get(i).getRateUID().equals(rateUID))
.findFirst();
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论