zoukankan      html  css  js  c++  java
  • java8 stream.filter 过滤集合中的数据

    java8 stream.filter 过滤集合中的数据

    List<Problem> problemByExample = problemService.getProblemByExample(problemExample);
    List<Problem> problemList = problemByExample.stream().filter(problem -> "空调制冷".equals(problem.getProTitle()) || "李一一的难题1".equals(problem.getProTitle())).collect(Collectors.toList());
    

    首先先查出所有的数据,然后在转为stream,再利用filter进行过滤数据即可。

    其他知识点

    stream.foreach 和 普通for循环的区别

    看了下网上的一些博客,java8新特性中的stream主要是多线程所使用的,适用于多线程环境中,如果是单核状态下,不建议使用stream,但是无奈语法简单啊。为了性能,如果不是多线程,还是选择增强for循环吧。

    StringBuilder 、StringBuffer、String的区别

    背景:

    遇到一个场景:需要将字符串中的所有img标签的相对路径改成绝对路径:

    比如

    中国作为一个坚定的马克思主义政党,人的初心和使命,从建党之初就是为绝大多数人谋利益。我党一直秉持全心全意为人民服务的根本宗旨,在<img alt="" src="/photoef6137172fcc40c5b3e91f4d2c4347a1.jpg" style="height:68px; 110px" /><img alt="" src="/photoef6137172fcc40c5b3e91f4d2c4347a1.jpg" style="height:68px; 110px" />
    

    需要将src后面的加上一个url,比如将其变成:src="https://www.baidu.com/photoef6137172fcc40c5b3e91f4d2c4347a1.jpg"这样的形式。涉及到字符串操作,使用String的话,肯定不合适,所以需要将String转化为Stringbuffer或者StringBuilder类,然后使用append进行追加到后面。

    区别:

    线程安全

    这块没怎么使用过,但是面试有可能遇到这样的问题,get it。

    StringBuffer:线程安全,StringBuilder:线程不安全。原因: StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 StringBuilder 修饰。

    缓冲区

    具体看参考文档吧

    性能

    StringBuilder优于StringBuffer,因为有synchronized 修饰。

    实现过程

    public String reviseImgContent(String content){
        StringBuilder sb = new StringBuilder();
        String[] split = content.split("src="");
        for (int i = 0; i < split.length; i++) {
            StringBuilder stringBuilder = new StringBuilder(split[i]);
            if (i==split.length-1){
                sb.append(stringBuilder);
                break;
            }
            stringBuilder.append("src="https://www.baidu1.com");
            sb.append(stringBuilder);
        }
        return sb.toString();
    }
    

    流程:这个方法是将content转换成为带url地址的src。

    1. 创建一个新的StringBuilder类,用来返回最终结果,所以的分段结果都追加到这个sb上。
    2. 然后将content按照src=进行分段,返回一个String数组
    3. 对String数组进行循环,每获得一个转换成为StringBuilder,然后判断是否是最后一个,如果是,则直接追加,不加url,并且打断循环,如果不是,则将url追加到后面,然后合并到sb中
    4. 最后返回。

    恩,大概就是这样。

    博客网站 https://yamon.top 个人网站 https://yamon.top/resume GitHub网站 https://github.com/yamonc 欢迎前来访问
  • 相关阅读:
    造出最好的 CMS 轮子
    搭建开发框架Express,实现Web网站登录验证
    QueryOver<T>
    NVelocity
    .NET 相依性注入
    Unity 3.5
    java socket 的参数选项解读(转)
    换种方式去分页(转)
    上海市居住证办理材料及流程
    java动态代理
  • 原文地址:https://www.cnblogs.com/chenyameng/p/12777478.html
Copyright © 2011-2022 走看看