java - 使对象的字段对于数组列表中存储的每个对象都是唯一的

标签 java arraylist unique bluej

所以我有一个存储客户的数组列表,我的任务是制作它,以便没有客户可以拥有相同的 ID

该代码有一个写入方法,可以在代码关闭时写入所有客户的文本文件,并且在重新打开代码并且创建新客户并将其添加到该文件时,客户已被写入该文件该列表中的任何人都不能与之前存储的客户列表中已存在的人员具有相同的 ID

这是一些代码:

这是客户文本文件的写入数据

public void writeCustomerData(String fileName)
throws FileNotFoundException
{
    PrintWriter pw = new PrintWriter(fileName);
    for (Customer c: customerList)
    {
        String lineOfOutput = c.getCustomerID() + ", " + c.getTitle() + ", " + c.getFirstName() + ", " + c.getSurname() + ", " + c.getInitials();
        pw.println(lineOfOutput);
    }
    pw.close();
}

这是添加新客户的构造函数

public Customer(String nSurname, String nFirstName, String nOtherInitials, String nTitle)
{
    customerID = "unknown";
    surname = nSurname;
    firstName = nFirstName;
    otherInitials = nOtherInitials;
    title = nTitle;
}

这是将客户存储到 arrayList 中的代码

public void storeCustomer(Customer customer)
{
    if (customer.getCustomerID().equalsIgnoreCase("unknown"))
    {
        customer.generateCustomerID("AB", 5);
    }
    customerList.add(customer);
}

这是生成 ID 的代码

public void generateCustomerID(String prefix, int length)
{
    Random random = new Random();
    int rand = 0;
    for (int i = 0; i < length; i++)
    {
        rand = random.nextInt(10);
        prefix = prefix + Integer.toString(rand);

    }
    setID(prefix);
}

最佳答案

如果我理解正确,你需要实现你需要使用 Set (“不包含重复元素的集合”)以避免重复。

因此,每次运行代码时,您都必须从文件中读取所有行,创建一个 Customer 并将其存储在 Set 中。 使用 Set 时,当您调用 customerList.add(customer) 时,Set 本身将负责避免添加重复项。 Set 使用方法 equalshashCode 来检查 Custom 是否已在 Set 中,因此请务必正确实现这些方法。

关于java - 使对象的字段对于数组列表中存储的每个对象都是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61657273/

相关文章:

java - java中传递参数的通用可变个数

java - 如何使用 Jackson ObjectMapper 解析 java 对象的 json 响应

python - 按 pandas 数据框唯一的第一个值分组 - 返回 numpy 数组

arrays - 我无法从数组中删除重复项,只能获取数组的最后一个元素

java - 无论底层操作系统如何,都从 Java 执行进程

使用不同的 URL 进行 java servlet 测试

java - 按属性对 Java ArrayList<MyObject> 进行排序

java - 为什么ArrayList中必须保留一个Hashmap作为2行ListView的数据源

java - 检查 Arraylist 中是否存在用户名

mysql - 如何在两个字段上创建 'Two-Sided' 唯一索引?