使用方法:
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=喜鹊)]