如何使用Java Stream打印列表中除firstName为Avijit外的所有对象
使用Java Stream过滤并打印排除指定firstName的对象列表
没问题,这事儿用Java Stream的filter操作就能轻松搞定,我给你整理好完整的实现方案和细节说明:
首先,你的代码里缺少User实体类的定义,咱们先补上这个类(需要包含字段、构造方法,以及用来打印对象的toString()方法):
public class User { private int id; private String firstName; private String lastName; private String password; // 构造方法 public User(int id, String firstName, String lastName, String password) { this.id = id; this.firstName = firstName; this.lastName = lastName; this.password = password; } // 获取firstName的getter方法(Stream过滤需要用到) public String getFirstName() { return firstName; } // 重写toString,方便打印对象内容 @Override public String toString() { return "User{" + "id=" + id + ", firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", password='" + password + '\'' + '}'; } }
接下来修改你的StreamDemo类,在main方法里添加Stream的过滤和打印逻辑:
import java.util.ArrayList; import java.util.List; public class StreamDemo { public static void main(String[] args) { List<User> name = new ArrayList<>(); name.add(new User(1,"Avijit","Barua","aavi1234")); name.add(new User(2,"Mezanul","Haque","mezan1234")); name.add(new User(3,"Subrata","Nath","subrata1234")); name.add(new User(4,"Raman","Karmakar","raman1234")); name.add(new User(5,"Mowdud","Ahmed","mowdud1234")); // 使用Stream过滤并打印排除firstName为"Avijit"的对象 name.stream() // 过滤条件:排除firstName等于"Avijit"的用户 .filter(user -> !"Avijit".equals(user.getFirstName())) // 遍历打印每个符合条件的对象 .forEach(System.out::println); } }
关键步骤说明:
stream():把List转换成Stream流,开启流式操作。filter():传入一个Lambda表达式作为过滤条件,用!"Avijit".equals(user.getFirstName())来排除目标用户——这里推荐用字符串的equals()方法而不是==,避免因字符串引用不同导致的判断错误。forEach():遍历过滤后的Stream,用方法引用System.out::println打印每个对象的内容(这依赖于我们之前重写的toString()方法)。
运行这段代码后,你就会看到除了firstName为"Avijit"的User之外,其他所有对象都被打印出来啦。
内容的提问来源于stack exchange,提问作者Avijit Barua
相关产品推荐
相关产品推荐

