0
点赞
收藏
分享

微信扫一扫

List<Class>数组stream的基础使用

晴儿成长记 2022-03-11 阅读 64

使用方法:

public static void main(String[] args) {
        List<String> animal_no=new ArrayList<>();
        animal_no.add("101");
        animal_no.add("102");
        animal_no.add("103");
        System.out.println("不会飞的动物列表"+animal_no);
        List<Animal> animalList=new ArrayList<>();
        Animal animal1 = new Animal();
        animal1.setId(101);
        animal1.setName("大象");
        Animal animal2 = new Animal();
        animal2.setId(102);
        animal2.setName("狮子");
        Animal animal3 = new Animal();
        animal3.setId(103);
        animal3.setName("老虎");
        Animal animal4 = new Animal();
        animal4.setId(104);
        animal4.setName("喜鹊");
        animalList.add(animal1);
        animalList.add(animal3);
        animalList.add(animal2);
        animalList.add(animal4);
        System.out.println("所有的动物列表"+animalList);
        //获取数组的第一个元素
        Optional<Animal> first = animalList.stream().findFirst();
        System.out.println("获取数组的第一个元素:"+first);

        //获取数组中id==103的元素
        List<Animal> collect = animalList.stream().filter(animal -> animal.getId()==103).collect(Collectors.toList());
        System.out.println("获取数组中id==103的元素:"+collect);

        //按照数组中id进行排序
        List<Animal> collect1 = animalList.stream().sorted((Comparator.comparing(Animal::getId))).collect(Collectors.toList());
        System.out.println("按照数组中id进行排序:"+collect1);

        //返回前几个元素
        List<Animal> collect2 = animalList.stream().limit(2).collect(Collectors.toList());
        System.out.println("返回前几个元素"+collect2);

        //去除前几个元素
        List<Animal> collect3= animalList.stream().skip(2).collect(Collectors.toList());
        System.out.println("去除前几个元素"+collect3);

        //把对象数组中id映射成泛型数组
        List<Integer> collect4 = animalList.stream().map(Animal::getId).collect(Collectors.toList());
        List<String> collect5 = animalList.stream().map(Animal::getName).collect(Collectors.toList());
        System.out.println("把对象数组中id映射成int数组"+collect4+"把对象数组中id映射成String数组"+collect5);

        //计算对象数组中id的乘积,总共  reduce 第一个参数 0 代表起始值为 0,lambda (a, b) -> a + b 即将两值相加产生一个新值,相同何以使用乘
        //reduce(0, Integer::sum);等同于reduce(1, (a, b) -> a + b);
        Integer reduce = animalList.stream().map(Animal::getId).reduce(0, Integer::sum);
        Integer reduce1 = animalList.stream().map(Animal::getId).reduce(1, (a, b) -> a * b);
        System.out.println("计算对象数组中id的总共:"+reduce+",乘积:"+reduce1);

        //过滤数组中id不含animal_no中的值  a.contains(b)中a数组类型,b是必须保持同一类型类型
        animalList = animalList.stream().filter(animal -> !animal_no.contains(animal.getId()+"")).collect(Collectors.toList());
        System.out.println("过滤数组中id不含animal_no中的值:"+animalList);

    }

输出的值:

不会飞的动物列表[101, 102, 103]
所有的动物列表[Animal(id=101, name=大象), Animal(id=103, name=老虎), Animal(id=102, name=狮子), Animal(id=104, name=喜鹊)]
获取数组的第一个元素:Optional[Animal(id=101, name=大象)]
获取数组中id==103的元素:[Animal(id=103, name=老虎)]
按照数组中id进行排序:[Animal(id=101, name=大象), Animal(id=102, name=狮子), Animal(id=103, name=老虎), Animal(id=104, name=喜鹊)]
返回前几个元素[Animal(id=101, name=大象), Animal(id=103, name=老虎)]
去除前几个元素[Animal(id=102, name=狮子), Animal(id=104, name=喜鹊)]
把对象数组中id映射成int数组[101, 103, 102, 104]把对象数组中id映射成String数组[大象, 老虎, 狮子, 喜鹊]
计算对象数组中id的总共:410,乘积:110355024
过滤数组中id不含animal_no中的值:[Animal(id=104, name=喜鹊)]
举报

相关推荐

0 条评论