区别 stream().filter和stream().map,简单的不要不要的

Posted 沛沛老爹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区别 stream().filter和stream().map,简单的不要不要的相关的知识,希望对你有一定的参考价值。

 用到stream特性的情况。一般是在List的操作上。

用List的操作,一般都是获取子集(匹配)或者获取其中某些制定项的操作会比较多。

例如从一个List<T>中获取满足条件的子集。一般我们都会用 stream().filter和stream().map来处理。

这两个用的比较多,有些同学还会遇到用着用着就迷糊了:

到底什么时候用什么?这两个又有什么区别呢?

下面我们简单来上个代码。

1、先上个砧板上的肉肉(List):

@Data  //Lombok
public Class person

   private Integer age;

   private String name;




/*
* 填充数据省略?
*/
public Class personTest

    public static void main(String[] args)
        List<Person> persons = new ArraryList<>();
        
        for(int i =0 ;i<5;i++)
            Person person = new Person();
            person.setAge(i);
            person.setname("姓名_"+i.toString());
        
    

2、测试下filter

private void testFilter(List<Person> persons)
    
    List<Person> childPersons = persons.stream().filter(e-e>getAge.equals(1)).collect(Collectors.toList());
    

3、测试下map:

private void testMap(List<Person> persons)
    
    List<Age> childPersons = persons.stream().filter(Person::getAge).collect(Collectors.toList());
    

其实在上面的示例中,大家就可以很清楚的观察到Filter和Map的区别了。

一个是类型不变,一个是改变了类型。

以上是关于区别 stream().filter和stream().map,简单的不要不要的的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg decode, encode, transcode, mux, demux, stream, filter的区别

java list.stream.filter 效率高吗

面试官问:Stream 中的 mappeekforeach 方法的区别?傻傻分不清楚。。

Java 中 Stream 流学习一篇文章就够了

Java8,Stream之filter简单介绍

stream().filter()的用法