2016-05-17 1 views
1

は、ここで特定の文字列が一致したかをマッチングさgetPlayingSongList()からインデックス一覧Javaストリームを使用してリストから特定のインデックスを取得するにはどうすればよいですか?

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

、からされるかどうかを確認するためのコードです。

私はcom.annimon:streamライブラリを使用しています。

答えて

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 
+0

ありがとう、いくつかの小さな微調整でうまくいきます。 – akki

2

Akahの提案を使用して、アンドロイドのため、コードの下に適しています。

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"); 
      } 

ありがとうございます。

関連する問題