gpt4 book ai didi

java - 关于ArrayList以后的使用?

转载 作者:行者123 更新时间:2023-12-02 02:47:48 26 4
gpt4 key购买 nike

我是一名java初学者,正在学习oop概念。我已经成功将对象值存储到数组列表中,并尝试在 main 方法中显示数组列表。但问题是,如果我删除主方法中的添加值代码并再次显示数组列表。 arraylist 将显示空值,即 []。请帮助我,这是我的理解问题还是需要存储在txt文件中?数据库或获取或存储数组列表的内容,并可用于显示我之前添加的所有记录、更新或删除

这是我的实践项目,不使用数据库来创建基于 oop 概念的 POS 系统。我之前学过 php 和 c#,并且做过相同类型的项目,并且因为使用数据库而没有很困惑。但现在我感到很困惑如何使用java来创建它,并且能够基于oop概念创建成员、更新成员配置文件等。请帮助我或给我建议。非常感谢。

我的 super 类

class Person {
private List<Customer> customers;
private String name;
private String gender;
private String email;

public Person(){
}

public Person(List<Customer> customers){
this.customers = customers;
}

public Person(String name, String gender, String email){
***
}

public List<Customer> getCustomers(){
return customers;
}

public void addCustomer(Customer customer){
customers.add(customer);
}

//Getter
***
//Setter}

我的子类

class Customer extends Person{

private int custID;
private static int customerID = 10001;

public Customer(String name, String gender, String email,int custID){

super(name, gender, email);
this.custID = custID;
customerID++;
}

public int getCustID(){
return custID;
}

public static int getCustomerID(){
return Customer.customerID;
}

public String toString(){
return String.format("%d%30s%7s%30s\n", getCustID(), getName(), getGender(),getEmail());
}

}

我的主要方法

public class POS {

public static void main(String[] args) {

Customer p1 = new
Customer("Halo","M","haloworld@gmail.com",Customer.getCustomerID());
Customer p2 = new
Customer("Haloo","F","halobitchworld@gmail.com",Customer.getCustomerID());


List<Customer> cList = new ArrayList<>();

cList.add(p1); //if remove
cList.add(p2); // if remove

Person customer = new Person(cList);
System.out.print(customer.getCustomers());

}

}

我希望在 main 中编写代码,例如

 { Person person = new Person();
System.out.print(person);
}

会显示我之前添加的结果

最佳答案

如果您不想将客户添加到主函数中的 ArrayList 中,一个好方法是设置 List<Customer>静态在你的Person -class 并在创建客户时添加客户。

public class Person {

private static List<Person> customers = new ArrayList<>();
public static List<Person> getCustomers() {
return customers;
}

private String name;
private String gender;
private String email;

public Person(String name, String gender, String email) {
this.name = name;
this.gender = gender;
this.email = email;
customers.add(this);
}

/* getters */

}

现在在你的 main() 函数中你只需要创建 Customers它们会自动添加到 customers列表,因此您可以通过调用静态函数 getCustomers() 来获取它们

public static void main(String[] args) {
Customer p1 = new Customer("Halo","M","haloworld@gmail.com",Customer.getCustomerID());
Customer p2 = new Customer("Haloo","F","halobitchworld@gmail.com",Customer.getCustomerID());
System.out.print(Customer.getCustomers());
}

要存储它们,您必须实现某种存储系统,例如 MySQL,或者如果您不必从任何地方访问它们,则只需实现一个文本文件。您可以在 Stackoverflow 上找到大量有关如何执行此操作的教程。

编辑

@andy-turner 指出做customers.add(this);在构造函数内部确实很痛苦。所以你可以创建 ArrayList<Customer>在你的主类中,然后像这样工作:

private static ArrayList<Customer> customers = new ArrayList<>();

public static void main(String[] args) {
customers.add(new Customer("Halo","M","haloworld@gmail.com",Customer.getCustomerID()));
customers.add(new Customer("Haloo","F","halobitchworld@gmail.com",Customer.getCustomerID()));
System.out.print(customers);
}

关于java - 关于ArrayList以后的使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57132792/

26 4 0