2016-03-20 72 views
0

我想要生成客户对象并将它们存储在ArrayList中,但我不能。如何通过Java中的线程将项目添加到ArrayList

这里是我的客户类

public class Customer { 
private int customerID; 
private int processTime; 

ArrayList<Integer> customerIDList = new ArrayList<>(); 
ArrayList<Integer> processTimeList = new ArrayList<>(); 

public int getCustomerID() { 
    return customerID; 
} 

public void setCustomerID(int customerID) { 
    this.customerID = customerID; 
} 

public int getProcessTime() { 
    return processTime; 
} 

public void setProcessTime(int processTime) { 
    this.processTime = processTime; 
} 

public ArrayList<Integer> getCustomerIDList() { 
    return customerIDList; 
} 

public void setCustomerIDList(ArrayList<Integer> customerIDList) { 
    this.customerIDList = customerIDList; 
} 

public ArrayList<Integer> getProcessTimeList() { 
    return processTimeList; 
} 

public void setProcessTimeList(ArrayList<Integer> processTimeList) { 
    this.processTimeList = processTimeList; 
} 
} 

CustomerThread类,这是产生顾客对象10倍和两个客户100之间毫秒

public class CustomerThread extends Thread { 
Customer c = new Customer(); 
Methods method = new Methods(); 

@Override 
public void run() { 

    for(int i = 1; i <= 10; i++) { 
     try { 
      //c.setCustomerID(i); 
      //c.setProcessTime(method.generateProcessTime()); 

      c.getCustomerIDList().add(i); 
      c.getProcessTimeList().add(method.generateProcessTime()); 

      System.out.println("ID : " + c.getCustomerIDList().get(i) + " - Process Time : " + c.getProcessTimeList().get(i)); 
      Thread.sleep(100); 
     } 
     catch (InterruptedException ex) { 
      Logger.getLogger(CustomerThread.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 
} 

generateProcessTime的方法是随机生成INT数,没有问题。 这里是我的测试类

public class Test { 
public static void main(String[] args) { 

    CustomerThread ct = new CustomerThread(); 

    ct.start(); 

} 
} 

当我执行这些,会发生这种错误,

异常在线程 “线程0” java.lang.IndexOutOfBoundsException:指标:1,规格:1

回答

1

您要添加的数字1..10到列表

c.getCustomerIDList().add(i); 

但后来你想在指标1..10

c.getCustomerIDList().get(i) 

检索数字,但名单是从0索引,这就是为什么你IndexOutOfBoundsException
你还是从0..9迭代和增加价值i + 1

for(int i = 0; i < 10; i++) { 
    ... 
    c.getCustomerIDList().add(i + 1); 
    ... 
+0

非常感谢! – MrBoolean

相关问题