我是Java8流的新手,并且正在玩它们。我正在接受Venkat Subramaniam Programming with Streams in Java 8的这次演讲,并对其进行编码。
我一次又一次打电话给.stream()两次得到以下结果: -
basicCode.Person@c39f790
basicCode.Person@71e7a66b
我正在做以下事情: -
List <Person> people = createPeople(); // creating objects
System.out.println("1. get, in uppercase, the names of all female older than 18");
System.out.println(
people.stream()
.filter(person -> person.getGender() == Gender.FEMALE)
.filter(person -> person.getAge() > 18)
.map(person -> person.getName().toUpperCase())
.collect(toList())
);
System.out.println("2. print all males");
people.stream()
.filter(p -> p.getGender() == Gender.MALE)
.forEach(System.out::println);
public class Person {
private final String name;
private final Gender gender; //is an enum {MALE, FEMALE}
private final int age;
}
答案 0 :(得分:2)
另一种选择是和你的女性一样,但省略.toUpperstring()
。
了解如何为女性致电.getName()
,但不要为男性致电。
所以
System.out.println("2. print all males");
people.stream()
.filter(p -> p.getGender() == Gender.MALE)
.map(p -> p.getName()) // this line was missing
.forEach(System.out::println);
或只是
System.out.println("2. print all males");
people.stream()
.filter(p -> p.getGender() == Gender.MALE)
.map(Person::getName) // this is an alternative
.forEach(System.out::println);
答案 1 :(得分:1)
您在个人班级中执行toString()
实施,因此您将基本对象转换为字符串。
实施它,你就会得到你想要的东西。你的溪流都很好