ここに問題があります。インターバルのための私のconcatinate関数は、それに渡される最初の値をnullにしているように見えます。なぜなら、神の愛のために理由を説明することはできません。arraylistの最初のオブジェクトがnullになる理由は分かりません。
public static ArrayList<Intervals> ConcatinateIntervals(ArrayList<Intervals> intervals) {
ArrayList<Intervals> concatinatedIntervals = new ArrayList<>();
for (int i=0; i<intervals.size(); i++){
for(int j=0; j<intervals.size(); j++){
if(i==j){
continue;
}
if(intervals.get(i).getMax() < intervals.get(j).getMin() || intervals.get(i).getMin()>intervals.get(j).getMax()){
Intervals interval = intervals.get(i).Clone();
concatinatedIntervals.add(interval);
continue;
}
// 1
if(intervals.get(i).getMin() < intervals.get(j).getMin() && intervals.get(i).getMax()<intervals.get(j).getMax()){
Intervals interval = new Intervals(intervals.get(i).getMin(),intervals.get(j).getMax());
concatinatedIntervals.add(interval);
break;
}//2
if(intervals.get(i).getMin() < intervals.get(j).getMin() && intervals.get(i).getMax()>intervals.get(j).getMax()){
Intervals interval = intervals.get(i).Clone();
concatinatedIntervals.add(interval);
break;
}//3
if(intervals.get(i).getMin() < intervals.get(j).getMax() && intervals.get(i).getMax()>intervals.get(j).getMax()){
Intervals interval = new Intervals(intervals.get(j).getMin(),intervals.get(i).getMax());
concatinatedIntervals.add(interval);
break;
}//4
if(intervals.get(i).getMin() > intervals.get(j).getMin() && intervals.get(i).getMax()<intervals.get(j).getMax()){
Intervals interval = new Intervals(intervals.get(j).getMin(),intervals.get(j).getMax());
concatinatedIntervals.add(interval);
break;
}
}
}
//removes all duplicates
Object[] st = concatinatedIntervals.toArray();
for (Object s : st) {
if (concatinatedIntervals.indexOf(s) != concatinatedIntervals.lastIndexOf(s)) {
concatinatedIntervals.remove(concatinatedIntervals.lastIndexOf(s));
}
}
return concatinatedIntervals;
}
10,100 200,300,400,500の3つの間隔を戻す必要があります。しかし、私はnull
を得ているようです。私はどこに間違っているのか理解していない。助けてください。
考えられるのは、間隔を入力すると、10〜500 og 10〜100,200〜300,400〜500の間隔のリストが返され、重複があればそれを取り除き、彼らは一つに大きくなります。
ありがとうございました!問題は、クローンメソッドが無効で、そのようなnullオブジェクトをArrayListに返すということでした。 –