[英]About ArrayList in future use?
我是Java初学者,正在学习oop概念。 我已经成功地将对象值存储到arraylist中,并且尝试在main方法中显示arraylist。 但是问题是,如果我在main方法中删除了增值代码,然后再次显示arraylist。 arraylist将显示为[]的空值。 请帮助我,这是我的理解问题,还是需要存储在txtfile中? 数据库或获取或存储arraylist的内容,可用于显示我之前添加的所有记录,更新或删除
这是针对我的实践项目,并且不使用数据库来创建基于oop概念的POS系统。 我以前学过php和c#,并且我做相同类型的项目,并且由于使用数据库而不太困惑。 但是现在我感到困惑如何使用Java创建它,并且能够基于oop概念创建成员,更新成员配置文件等。 请帮助我或提出建议。 非常感谢。
我的超级班
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中,那么一种好方法是在Person
类中将List<Customer>
设置为static并在创建客户时将其添加。
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);
在构造函数内部确实很痛苦。 因此,您可以只在Main-class中创建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 Collections Framework一样, ArrayList
是用于将数据保存在内存中的结构。 当程序结束执行时,将释放所有该内存。 您的ArrayList
被破坏。
如果要在运行之间共享数据,则必须存储它。
您可以打开存储中的文件,并将数据值写入文本。 在下一次运行时,请读取该文件,将文本解析回对象,然后填充新的ArrayList
。
您可以打开一个文件,并使用Java序列化技术让ArrayList
将自身写入存储。 或者,您可以使用其他序列化格式自己进行序列化 。
或将您的数据值发送到数据库,该数据库又将它们写入存储。 下次运行时,从数据库检索。
或者将您的数据通过网络传递给代表您接受数据的某些服务。 在下次运行时,向服务询问您的数据。
所有这些都太笼统了,无法讨论堆栈溢出。 您需要进行自己的研究和学习。
arraylist将显示为[]的空值。
字符串[]
表示一个空数组,该数组不包含任何元素。 这样的数组不为空! Null表示完全没有数组。
想象一下一个拿着书架的书架。 这就像一个包含元素的数组。 移开书本。 空架子就像一个空数组,没有元素。 现在,取下书架并将其燃烧。 那是一个空数组,意味着根本没有数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.