【问题标题】:How to get particular index for any data from list using Java Stream?如何使用 Java Stream 从列表中获取任何数据的特定索引?
【发布时间】:2016-05-17 10:03:27
【问题描述】:

这是一个检查特定字符串是否与列表匹配的代码

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 库。

【问题讨论】:

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


    【解决方案1】:

    使用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
    

    【讨论】:

      【解决方案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");
                  }
      

      非常感谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        • 2022-06-23
        • 2020-09-07
        • 2022-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多