java使用stream流获取对象中的某个属性
java使用stream流获取对象中的属性并排序、去重操作
stream流获取对象中的属性应该使用 Stream map(Function<? super T, ? extends R> mapper)方法
1.复制以下代码直接运行
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) throws Exception {
List<Person> peoples = new ArrayList<Person>();
for (int i = 0; i < 10; i++) {
Person person = new Person();
person.setAge(i);
person.setName("name" + i);
peoples.add(person);
}
//获取person对象中的age属性
List<Integer> ageList = peoples.stream().map(Person::getAge).collect(Collectors.toList());
System.out.println(" ageList"+ageList);
//获取person中的age属性并去重
List<Integer> ageDistinct = peoples.stream().map(Person::getAge).distinct().collect(Collectors.toList());
System.out.println("ageDistinct"+ageDistinct);
//获取person中的age属性并按大到小年龄倒叙排序
List<Integer> ageDesc = peoples.stream().sorted(Comparator.comparingInt(Person::getAge).reversed()).map(Person::getAge).collect(Collectors.toList());
System.out.println("ageDesc"+ageDesc);
}
static class Person {
public String name;
public int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}