Java 为每个实例化的对象创建新的ArrayList
我有一个类,Java 为每个实例化的对象创建新的ArrayList,java,arraylist,Java,Arraylist,我有一个类,Employee,如下所示: import java.util.ArrayList; public class Employee extends Person { int salary; ArrayList<Sales> sales = new ArrayList<>(); public Employee(String name, int phoneNumber, String address,
Employee
,如下所示:
import java.util.ArrayList;
public class Employee extends Person
{
int salary;
ArrayList<Sales> sales = new ArrayList<>();
public Employee(String name, int phoneNumber, String address,
int salary, ArrayList<Sales> sales)
{
super(name, phoneNumber, address);
this.salary = salary;
this.sales = sales;
}
}
import java.util.ArrayList;
公共类雇员扩展个人
{
国际工资;
ArrayList sales=新建ArrayList();
公共雇员(字符串名称、整数电话号码、字符串地址、,
内部薪资,ArrayList销售)
{
超级(姓名、电话号码、地址);
这个。薪水=薪水;
这个。销售=销售;
}
}
现在,对于每个员工
,我还必须存储每个员工
的销售列表。我的方法是创建一个Sales
类并添加ArrayList Sales=new ArrayList()编码>到员工
构造函数。我是朝着正确的方向前进,还是完全偏离了方向
谢谢你的帮助 首先,您应该为您的领域使用列表
界面来促进松耦合!其次,List
包含用于复制列表元素的addAll
方法:
// ...
private int salary;
private List<Sales> sales = new ArrayList<>();
public Employee(String name, int phoneNumber, String address, int salary, List<Sales> sales) {
super(name, phoneNumber, address);
this.salary = salary;
this.sales.addAll(sales);
}
/。。。
私人薪酬;
私有列表销售额=新的ArrayList();
公共员工(字符串名称、整数电话号码、字符串地址、整数工资、列表销售){
超级(姓名、电话号码、地址);
这个。薪水=薪水;
this.sales.addAll(sales);
}
您似乎在做两件事:将ArrayList传递给员工构造函数,将其直接分配给销售人员,并创建一个新的ArrayList-这绝对是多余的。您的代码有问题吗?+1用于防御性编程,-1用于使用列表,如果您有一个getList方法,它应该返回接口列表,但是您应该尽可能利用您的实现。好的,那么我将用Collection
替换它,而不是List
,以使其更通用。如果您需要访问任何代码(>代码> ARARELIST/<代码>或<代码> HASSET < /C> >或稍后执行的任何内容,则可以更改内部字段类型。我建议不要这样做,在大多数情况下,列表是更好的方式,因为集合也是一个集合,但要知道您是否得到唯一的“列表”是不是要考虑的问题。这就是为什么我会说:上下文相关,但在大多数情况下,使用List或SetIt实际上取决于集合的使用。例如,当我创建一个可以添加和删除EventListener
s的类时,我倾向于使用Set
而不是List
(以及CopyOnWriteArraySet
)由于通常的约定,当触发事件时,侦听器将以未定义的顺序收到通知。只要您的EventListener覆盖hashCode()和equals(),您就可以了。