Java 集合操作:添加、删除、序列化和反序列化用户
以下是一个简单的 Java 程序,可以实现往集合中手动接收用户的信息,删除集合中对应的信息,并实现集合的序列化和反序列化。\n\njava\nimport java.io.*;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Scanner;\n\nclass User implements Serializable {\n private String name;\n private int age;\n\n public User(String name, int age) {\n this.name = name;\n this.age = age;\n }\n\n public String getName() {\n return name;\n }\n\n public int getAge() {\n return age;\n }\n\n @Override\n public String toString() {\n return "User{" +\n "name='" + name + "'" +\n ", age=" + age +\n '}';\n }\n}\n\npublic class UserCollection {\n private List<User> userList;\n\n public UserCollection() {\n userList = new ArrayList<>();\n }\n\n public void addUser(User user) {\n userList.add(user);\n }\n\n public void removeUser(String name) {\n userList.removeIf(user -> user.getName().equals(name));\n }\n\n public void serialize(String filename) {\n try {\n FileOutputStream fileOut = new FileOutputStream(filename);\n ObjectOutputStream out = new ObjectOutputStream(fileOut);\n out.writeObject(userList);\n out.close();\n fileOut.close();\n System.out.println("集合已序列化到文件 " + filename);\n } catch (IOException e) {\n e.printStackTrace();\n }\n }\n\n public void deserialize(String filename) {\n try {\n FileInputStream fileIn = new FileInputStream(filename);\n ObjectInputStream in = new ObjectInputStream(fileIn);\n userList = (List<User>) in.readObject();\n in.close();\n fileIn.close();\n System.out.println("集合已从文件 " + filename + " 反序列化");\n } catch (IOException | ClassNotFoundException e) {\n e.printStackTrace();\n }\n }\n\n public void printUsers() {\n for (User user : userList) {\n System.out.println(user);\n }\n }\n\n public static void main(String[] args) {\n UserCollection collection = new UserCollection();\n Scanner scanner = new Scanner(System.in);\n\n while (true) {\n System.out.println("\n请选择操作:");\n System.out.println("1. 添加用户");\n System.out.println("2. 删除用户");\n System.out.println("3. 序列化集合");\n System.out.println("4. 反序列化集合");\n System.out.println("5. 打印用户列表");\n System.out.println("0. 退出程序");\n\n int choice = scanner.nextInt();\n scanner.nextLine(); // 读取换行符\n\n switch (choice) {\n case 1:\n System.out.println("请输入用户姓名:");\n String name = scanner.nextLine();\n System.out.println("请输入用户年龄:");\n int age = scanner.nextInt();\n scanner.nextLine(); // 读取换行符\n collection.addUser(new User(name, age));\n break;\n case 2:\n System.out.println("请输入要删除的用户姓名:");\n String removeName = scanner.nextLine();\n collection.removeUser(removeName);\n break;\n case 3:\n System.out.println("请输入保存序列化数据的文件名:");\n String serializeFilename = scanner.nextLine();\n collection.serialize(serializeFilename);\n break;\n case 4:\n System.out.println("请输入要反序列化的文件名:");\n String deserializeFilename = scanner.nextLine();\n collection.deserialize(deserializeFilename);\n break;\n case 5:\n collection.printUsers();\n break;\n case 0:\n System.out.println("程序已退出!");\n System.exit(0);\n }\n }\n }\n}\n\n\n这个程序提供了以下操作选项:\n\n1. 添加用户:手动输入用户的姓名和年龄,将用户添加到集合中。\n2. 删除用户:手动输入要删除的用户的姓名,从集合中删除对应的用户。\n3. 序列化集合:手动输入保存序列化数据的文件名,将集合序列化到文件中。\n4. 反序列化集合:手动输入要反序列化的文件名,从文件中反序列化集合。\n5. 打印用户列表:打印当前集合中的用户信息。\n0. 退出程序:退出程序运行。\n\n使用该程序,你可以无限删除用户,并且可以将集合序列化到文件中,再次运行程序时可以从文件中反序列化集合,恢复之前保存的用户信息。
原文地址: https://www.cveoy.top/t/topic/qg1K 著作权归作者所有。请勿转载和采集!