나는 OutlierInfo라는 클래스를 만들었습니다. 이제 내가해야 할 일은 SerialId에 따라 개체를 그룹화하고 각 그룹의 arraylist를 만들고 그룹의 모든 arraylists를 병합하는 것입니다. 이 코드는 작성했지만 오류가 발생하고 이유가 없습니다. . 다음 코드가 오류를 일으키는 이유를 찾는 데 도움이 필요합니까? ArrayList에 분할하고 다시 병합 다시
public class ArraylistSort
{
ArrayList<OutlierInfo> result = new ArrayList();
static ArrayList<ArrayList<OutlierInfo>> groupResult = new ArrayList<ArrayList<OutlierInfo>>();
String[] months = { "JAN", "FEB", "MAR", "APR" ,
"MAY", "JUN", "JUL", "AUG" ,
"SEP", "OCT", "NOV", "DECM"
};
int counter=0;
int count=0;
public ArraylistSort(){
for(int i=0;i<2;i++)
{
for(int j=0;j<4;j++)
{
int year=2000+j;
OutlierInfo o=setValues(i,months[j],year);
result.add(o);
System.out.println("result size"+result.size());
}
}
while(result.size()!=0)
{
OutlierInfo info1=new OutlierInfo();
info1=result.get(counter);
ArrayList<OutlierInfo> partialInfo=new ArrayList();
for(int j=1;j<count;j++)
{
OutlierInfo info2=new OutlierInfo();
info2=result.get(j);
if(info1.serialId==info2.serialId)
{
partialInfo.add(info2);
result.remove(info2);
}
}
partialInfo.add(info1);
System.out.println("partiainfosize"+partialInfo.size());
groupResult.add(partialInfo);
result.remove(info1);
System.out.println("r size "+result.size());
}
count=result.size();
}
private OutlierInfo setValues(int id,String month,int year)
{
OutlierInfo a = new OutlierInfo();
a.setSerialId(id);
a.setMonth(month);
a.setYear(year);
return a;
}
public static void main(String[] args)
{
ArraylistSort as=new ArraylistSort();
}
}
나는 다음과 같은 오류가 발생합니다 : 누군가가 나 오류를 이해하는 데 도움이 내가 어떤 논리 오류가 있나요?
initial size 0
result size1
result size2
result size3
result size4
result size5
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
result size6
result size7
result size8
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at STAnalysis.ArraylistSort.<init>(ArraylistSort.java:56)
at STAnalysis.ArraylistSort.main(ArraylistSort.java:98)
Java Result: 1
UPDATE
현재 내가 실제로 위해 ArrayList 개체를 추가하고 때 오류 "범위 밖으로 인덱스가"슬로우됩니다 것을 직면하고있는 가장 큰 혼란을! 자바
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
배열 인덱스 :
UPDATE
은 내가
public class StAnamoliesSequencer
{
ArrayList<OutlierInfo> stAnomalies =new ArrayList();//arraylist of spatio-temporal outliers
ArrayList<ArrayList<OutlierInfo>> sequencedStAnomalies=new ArrayList<ArrayList<OutlierInfo>>();
int firstElement;
public StAnamoliesSequencer()
{
firstElement=0;
}
public ArrayList<ArrayList<OutlierInfo>> sequenceStAnomalies(ArrayList<OutlierInfo> sTanomalies)
{
int loopSizeDeterminer;//determines teh size of the inner loop and is dynamic.
for(int index=0;index<sTanomalies.size();index++)
{
OutlierInfo stOutlier=new OutlierInfo();
stOutlier=sTanomalies.get(index);
stAnomalies.add(index, stOutlier);
}
loopSizeDeterminer=stAnomalies.size();
while(stAnomalies.size()!=0)
{
OutlierInfo stOutlier1=new OutlierInfo();
ArrayList<OutlierInfo> tracker=new ArrayList();//arraylist that stores the grouped Outliers to be deleted later
stOutlier1=stAnomalies.get(firstElement);
ArrayList<OutlierInfo> similarOutlier=new ArrayList();//similaroutliers are kept in an arraylist
similarOutlier.add(stOutlier1);
tracker.add(stOutlier1);
for(int index=1;index<loopSizeDeterminer;index++)
{
OutlierInfo stOutlier2=new OutlierInfo();
stOutlier2=stAnomalies.get(index);
if(stOutlier1.serialId==stOutlier2.serialId)
{
similarOutlier.add(stOutlier2);
tracker.add(stOutlier2);
}
}
System.out.println("partiainfosize \t"+similarOutlier.size());
sequencedStAnomalies.add(similarOutlier);//adding arraylist of similar outliers to the arraylist of arraylist
for(int index=0;index<tracker.size();index++)
{
OutlierInfo groupedOutlier=new OutlierInfo();
groupedOutlier=tracker.get(index);
stAnomalies.remove(groupedOutlier);//grouped outliers are removed from original arraylist containing spatio-temporal outliers to reduce redundancy
}
System.out.println(" size "+stAnomalies.size());
loopSizeDeterminer=stAnomalies.size();
}
return sequencedStAnomalies;
}
}
을 오류가 있는지 확인입니다 따라서 arraylist의 크기가 증가하고 있기 때문에이 arralist에 8 개의 객체를 추가했기 때문에 크기가 8이어야합니다. 따라서 프로그램이 6 번째 객체에 액세스하려고 할 때 예외가되는 이유는 무엇입니까? 1970 :) – user1720616