【发布时间】:2020-02-23 04:42:23
【问题描述】:
是否可以使用 Streams 过滤器访问列表的索引? 我的意思是......我知道可以使用循环(while、for 等)来做到这一点,但是当它变成 Stream 时,就好像 List 会丢失有关索引的信息。
我认为是这样的:
list.stream().filter(x -> x > 100)
.fiter(--getIndexOfEachValue--)
.collect(Collectors.toList())
如果我有 List=[10,200,30,150,400,30]...
我希望结果=[1,3,4]
【问题讨论】:
-
请解释一下输入和输出。
-
为什么以后还需要索引。考虑您想要对集合进行的进一步计算可能会有所帮助。也许您可以将它们集成或附加到集合管道中,而不是稍后引用原始集合。顺便提一句。在进行过滤之前,您可以轻松地创建一对索引和值的流。
-
看来Java中没有内置
zipWithIndex(这可能表明通常有更好的方法不需要索引),所以你必须做这样的事情:gist.github.com/danilomo/999c9d209e97218fe58c8a9042ca1261 -
@aschoerk 在我最初的问题中,我提到了“列表/地图”..我不知道为什么 Stefan Zobei 更改它..是的,我知道在地图中没有索引..是键..但我想利用流搜索的速度并获取索引/键...你知道有时键是字符串,我也在探索流的可能性。
-
@JonathanMarin 如果你有一个 Map,这更容易,
entrySet().stream()已经给你键/值对,你可以过滤任何一个。
标签: java java-8 java-stream