如何使用ArrayList.addAll()

时间:2016-02-01 23:03:11

标签: arraylist

首先,我定义了两个类:

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()方法时,如何保持输入变量的属性值?谢谢!!!!

1 个答案:

答案 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" */