@Test
public void test1(){
List<Person> personList = new ArrayList<Person>();
personList.add(new Person("Tom", 8900, 23, "male", "New York"));
personList.add(new Person("Jack", 7000, 25, "male", "Washington"));
personList.add(new Person("Lily", 7800, 21, "female", "Washington"));
personList.add(new Person("Anni", 8200, 24, "female", "New York"));
personList.add(new Person("Owen", 9500, 25, "male", "New York"));
personList.add(new Person("Alisa", 7900, 26, "female", "New York"));
/**
* filter:筛选,是按照一定的规则校验流中的元素,将符合条件的元素提取到新的流中的操作。
* map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
* collect,收集,可以说是内容最繁多、功能最丰富的部分了。从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。
*/
List<String> fiterList = personList.stream().filter(x -> x.getSalary() > 8000).map(Person::getName)
.collect(Collectors.toList());
System.out.println("高于8000的员工姓名:" + fiterList);
List<Person> fiterList1 = personList.stream().filter(x -> x.getSalary() > 8000).collect(Collectors.toList());
System.out.println("----fiterList1:" + JSONUtil.toJsonStr(fiterList1));
Optional<Person> oldPerson = personList.stream().max(Comparator.comparingInt(Person::getAge));
System.out.println("---------oldPerson:"+JSONUtil.toJsonStr(oldPerson.get()));
List<Person> fiterList2 = personList.stream().map(person -> {
Person newPerson = new Person(person.getName(),person.getSalary(),person.getAge()+3,person.getSex(),person.getArea());
return newPerson;
}).collect(Collectors.toList());
System.out.println("----fiterList2:" + JSONUtil.toJsonStr(fiterList2));
List<Person> fiterList3 = fiterList2.stream().map(person -> {
Person newPerson = new Person(person.getName(),person.getAge()>28 ?person.getSalary()+500 : person.getSalary()+1000,person.getAge(),person.getSex(),person.getArea());
return newPerson;
}).collect(Collectors.toList());
System.out.println("----fiterList3:" + JSONUtil.toJsonStr(fiterList3));
Map<String,Person> map = personList.stream().collect(Collectors.toMap(Person::getName, p -> p));
System.out.println("---------------map:"+JSONUtil.toJsonStr(map));
}