如何使用Java Stream从列表中获取任何数据的特定索引?

时间:2016-05-17 10:03:27

标签: java android list java-8 java-stream

这是一个代码,用于检查列表中是否匹配特定字符串

if (Stream.of(getPlayingSongList()).filter(o -> o.getId().equals(songList.get(position).getId())).findFirst().isPresent()) {
           ToastMethod.show(getActivity(), "Song is already in queue", true);
        } 

我想知道,getPlayingSongList()中的哪个索引匹配。

我在android中使用com.annimon:stream库。

2 个答案:

答案 0 :(得分:2)

如何使用IntStream.range

由于我没有完整的代码,我只是举了一个虚拟的例子:

String[] myArray = { "a", "b", "c", "d" };
OptionalInt c = IntStream.range(0, myArray.length).filter(n -> "c".equals(myArray[n])).findFirst();

if (c.isPresent()) {
   System.out.println(c.getAsInt());
}

>>>> 2

答案 1 :(得分:2)

使用Akah的建议,对于android,下面的代码效果很好。

Optional<Integer> c = Stream.range(0, getPlayingSongList().size()).filter(n -> songList.get(position).getId().equals(getPlayingSongList().get(n).getId())).findFirst();

            if (c.isPresent()) {
                Log.i("get index", c.get()+" ok");
            }

非常感谢。