好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

java8使用filter()取出自己所需数据

使用filter()取出自己所需数据

java8的filter()方法是取出自己所需的数据,返回满足条件里的数据

person.java

?

1

2

3

4

5

6

7

8

9

10

11

package com.it.pojo; 

import java.util.Comparator;

import java.util.Objects;

 

@Data

@NoArgsConstructor

@ToString

public class Person {

    private String name;

    private Integer age;

}

test.java 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

package com.it.test;

import java.util.ArrayList;

import java.util.List;

import com.it.pojo.Person; 

import java.util.Comparator;

import java.util.stream.Collectors;

 

public class StreamTest {

     public static void main(String[] args) {

         Person person1 = new Person();

         person1.setAge( 21 );

         person1.setName( "21" );

 

         Person person2 = new Person();

         person2.setAge( 19 );

         person2.setName( "19" );

 

         Person person3 = new Person();

         person3.setAge( 19 );

         person3.setName( "20" );

 

         Person person4 = new Person();

         person4.setAge( 20 );

         person4.setName( "20" );

 

         Person person5 = new Person();

         person5.setAge( 19 );

         person5.setName( "18" );

        

         List<Person> people = new ArrayList<>();

         people.add(person1);

         people.add(person2);

         people.add(person3);

         people.add(person4);

         people.add(person5);

 

         List<Person> collect1 = people.stream().filter((person) -> {

             return person.getName().equals( "18" );  //取姓名是18的Person数据

         }).collect(Collectors.toList());

         System.out.println(collect1);

        

    

          List<Person> collect2 = people.stream().filter((person) -> {

             return person.getAge().intValue()== 19 && person.getName().equals( "19" ); 

         }).collect(Collectors.toList());

         System.out.println(collect2);

 

 

           List<Person> collect = people.stream().filter(person ->

             person.getName().equals( "181" )   //测试不满足条件的list集合会是什么样的

         ).collect(Collectors.toList());

 

         System.out.println(collect);    //集合size==0

         if (collect.size()== 0 ){

             System.out.println( "nihao" );

         }

    }

}

结果

java8 filter使用心得

如果A集合元素数量10个,filter满足条件为5个,没有赋值新集合,那么A还是原来的10个,如果赋值给B集合,B集合为5个;

如果A集合10个,filter满足条件为5个,赋值给B集合,遍历B集合,对这5个元素进行了修改,那么A集合中的5个元素也会同时修改。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/dsl59741/article/details/112240948

查看更多关于java8使用filter()取出自己所需数据的详细内容...

  阅读:18次