首先,我定义了两个类:
Class Job{
int id;
double prio;
}
Class Request{
int r_id;
ArrayList<Job> jobs = new ArrayList<Job>();
}
会有这样的功能:
Partition(ArrayList<Request> request){
ArrayList <Job> res = new ArrayList<Job>();
for(int i=0; i<request.size(); i++){
res.addAll(request.get(i).jobs);
}
}
我认为函数“Partition”中新ArrayList“res”中的每个元素都应该维护“request.get(i).jobs”中每个元素的“prio”值。但是,我们访问它们时,所有“prio”值都变为“0.0”。使用.addAll()方法时,如何保持输入变量的属性值?谢谢!!!!
答案 0 :(得分:0)
似乎你永远不会初始化职业的价值。创建Job实例时,pro默认初始化为0.0。 在Job类中创建一个setter方法,如果需要在创建job作业实例后设置它,则设置该值
Class Job {
int id;
double prio;
public void setPro(double d) {
this.pro = d;
}
public void setId(int i) {
this.id = i;
}
public void toString() {
System.out.println("pro = " + pro + ", " + " ID is " + id);
}
}
然后您可以创建一个实例并将值设置为
Job j = new Job();
j.setPro(1.5);
j.setId(44);
j.toString(); /* this prints "pro = 1.5, ID is 44" */
否则为Job类创建一个构造函数并在构造函数中设置pro的值,因此在创建Job实例时会设置该值。
Class Job {
int id;
double prio;
Job (int id, double pro) {
this.id = id;
this.pro = pro;
}
public void toString() {
System.out.println("pro = " + pro + ", " + " ID is " + id);
}
}
然后,您可以使用值
创建一个实例Job j = new Job(44, 1.5);
j.toString(); /* this prints "pro = 1.5, ID is 44" */