java吧 关注:1,241,983贴子:12,714,292

问个小问题

只看楼主收藏回复

一个list ("aa","bb","cc","dd","ee")怎么用stream流过滤当等于cc时停止收集,只要aa bb


IP属地:浙江来自iPhone客户端1楼2023-01-08 15:24回复


    IP属地:浙江来自iPhone客户端2楼2023-01-08 15:26
    收起回复
      list.stream().limit(2).tolist()


      IP属地:广西来自Android客户端4楼2023-01-08 16:30
      收起回复
        没法实现


        IP属地:陕西来自Android客户端5楼2023-01-09 16:07
        回复
          JDK9才增加了这个方法:
          list.takeWhile(n -> n == "cc").forEach(System.out::println);
          JDK8你只能自己实现/把JDK9的源码改改搬过来/使用第三方库。


          IP属地:北京7楼2023-01-09 16:21
          收起回复
            直接for循环不行吗


            IP属地:湖南9楼2023-01-11 16:49
            回复


              IP属地:广东10楼2023-01-11 17:27
              收起回复
                List<String> newList = list.stream().filter(item -> list.indexOf(item) < list.indexOf("cc")).collect(Collectors.toList());


                IP属地:广东11楼2023-01-11 17:38
                收起回复
                  limit


                  IP属地:北京来自Android客户端12楼2023-01-11 17:43
                  回复
                    public static void main(String[] args) {
                    List<String> list = Arrays.asList("aa", "bb", "cc", "dd", "ee");
                    list = list.stream().filter(s -> s.compareTo("cc") < 0).collect(Collectors.toList());
                    System.out.print(list);
                    }
                    拿走不谢


                    IP属地:浙江13楼2023-01-11 17:48
                    收起回复
                      filter不等于不就行了


                      IP属地:浙江来自Android客户端14楼2023-01-11 20:03
                      收起回复
                        用啥流,这种直接for


                        IP属地:广西来自Android客户端15楼2023-01-11 20:50
                        回复
                          for循环加break


                          IP属地:广东来自Android客户端16楼2023-01-11 21:08
                          回复
                            流原则上不适合做这种讲先后顺序DW操作,建议用for循环。
                            硬要用的话,只能抛异常,什么类型的异常,你需要研究一下 顺便看看要不要捕获异常


                            IP属地:山东来自Android客户端17楼2023-01-11 21:22
                            回复