を使用してサブリストの並列executioのための執行を適用する私は、大きなサイズのリストを実行したいです。あまりにも多くの時間を取る値を取得します。だから、私はサブリストとしてリストを分割し、すべてのリストを並行して実行したい。 私たちはそれに対していくつかの提案をすることができます。分割サブリストへの大規模なリストとJava
例:
従業員クラス:
public class Employee {
private int eno;
private String ename;
private String desg;
public Employee(int eno, String ename, String desg) {
this.eno = eno;
this.ename = ename;
this.desg = desg;
}
public int getEno() {
return eno;
}
public void setEno(int eno) {
this.eno = eno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getDesg() {
return desg;
}
public void setDesg(String desg) {
this.desg = desg;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "{eno=" + eno + ", ename=" + ename + ", desg=" + desg + "}";
}
}
は、クラスの下に使用して従業員を追加します。
は、実際に私は、Webサービスからこれらの値を取得しています。サンプルでは、私は従業員のリストと呼ばれ、私はすべてのサブリストの並列実行する各サブリストは100 が含まれているサブリストを作成するクラス
public class EmployeeTest {
public List<Employee> getEmployees() {
List<Employee> employees = new ArrayList<>();
for (int i = 1; i <= 701; i++) {
employees.add(new Employee(i, "s" + i, "sd" + i));
}
return employees;
}
}
の下に作成されました。ここでは、702要素がないので、 java.lang.IndexOutOfBoundsException
を取得しています。
public static void main(String[] args) throws InterruptedException {
List<Employee> collect = new EmployeeTest().getEmployees().parallelStream().collect(Collectors.toList());
int partitionSize = 100;
List<List<Employee>> partitions = new ArrayList<>();
for(int i = 0; i < collect.size();i += partitionSize){
partitions.add(collect.subList(i,i + Math.min(partitionSize, collect.size() - i)));
}
for (List<Employee> list : partitions) {
System.out.println(list.get(1));
}
}
どのように私は、このエラーの種類とどのように私は、すべてのリストの並列実行のためにここに執行を実装しなければならないを克服する必要があります。
出力:
{eno=2, ename=s2, desg=sd2}
{eno=102, ename=s102, desg=sd102}
{eno=202, ename=s202, desg=sd202}
{eno=302, ename=s302, desg=sd302}
{eno=402, ename=s402, desg=sd402}
{eno=502, ename=s502, desg=sd502}
{eno=602, ename=s602, desg=sd602}
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList$SubList.rangeCheck(ArrayList.java:1202)
at java.util.ArrayList$SubList.get(ArrayList.java:1019)
at com.employee.ExecuteServicesDemo.main(ExecuteServicesDemo.java:22)
ありがとう!