Java 8 使用Stream API 提取 User 类中不同属性值
假设 User 类有以下属性:'name'、'age'、'email'。
首先,需要在 User 类中实现 equals() 和 hashCode() 方法,以便在比较两个 User 对象时能够正确判断它们的属性值是否相等。
然后,可以使用 Java 8 的 Stream API 来提取 a2 中与 a1 不同的属性值,形成 a3。具体步骤如下:
-
定义一个新的 User 对象 a3,用于存储与 a1 不同的属性值。
-
使用 Stream API 的 filter() 方法过滤掉与 a1 相同的属性值,然后使用 map() 方法将结果映射为新的 User 对象。
-
最后,收集结果并返回 a3。
以下是示例代码:
import java.util.Objects;
import java.util.stream.Collectors;
public class User {
private String name;
private int age;
private String email;
// 构造方法、getter和setter省略
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age &&
Objects.equals(name, user.name) &&
Objects.equals(email, user.email);
}
@Override
public int hashCode() {
return Objects.hash(name, age, email);
}
}
public class Main {
public static void main(String[] args) {
User a1 = new User();
a1.setName("John");
a1.setAge(30);
a1.setEmail("john@example.com");
User a2 = new User();
a2.setName("John");
a2.setAge(25);
a2.setEmail("john@example.com");
User a3 = new User();
a3.setName(a2.getName());
a3.setAge(a2.getAge());
a3.setEmail(a2.getEmail());
a3 = a2.stream()
.filter(user -> !user.equals(a1))
.map(user -> {
User newUser = new User();
newUser.setName(user.getName());
newUser.setAge(user.getAge());
newUser.setEmail(user.getEmail());
return newUser;
})
.collect(Collectors.toList());
System.out.println(a3);
}
}
上述代码会输出与 a1 不同的属性值形成的 User 对象 a3。注意,这里使用了 collect(Collectors.toList()) 方法来将结果收集为 List
原文地址: https://www.cveoy.top/t/topic/qc9t 著作权归作者所有。请勿转载和采集!