vai*_*hav 3 java functional-programming java-stream
Java Instream 我需要具有空值的二维数组中元素的索引。我可以使用我在下面做的一维数组,它有效:
IntStream.range(0, myArr.length)
.filter(x -> myArr[x] == null)
.findFirst()
.orElse(-1);
Run Code Online (Sandbox Code Playgroud)
我可以使用 Streams over Arrays 和 flatmap 来获取对象,但我的目的是获取i
和j
的myArr[i][j]
值为空。
您可以使用一个long
值来携带两个int
值:
long both = LongStream.range(0, array.length)
.flatMap(i -> LongStream.range(0, array[(int)i].length).map(j -> j << 32 | i))
.filter(l -> array[(int)l][(int)(l>>32)] == null)
.findFirst().orElse(-1);
int j = (int) (both >> 32), i = (int)both;
if(j >= 0) {
System.out.println("found ("+i+", "+j+") "+array[i][j]);
}
Run Code Online (Sandbox Code Playgroud)
但这并不比例如简单
int i, j;
search: {
for(i = 0; i < array.length; i++) {
var sub = array[i];
for(j = 0; j < sub.length; j++)
if(sub[j] == null) break search;
}
j = -1;
}
if(j >= 0) {
System.out.println("found ("+i+", "+j+") "+array[i][j]);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
214 次 |
最近记录: |