그래서 여기에 문제가 있습니다. 간격을위한 나의 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의 간격으로 반환해야합니다. 하지만 나는 null
이되는 것 같습니다. 내가 어디로 잘못 가고 있는지 알아 내야 겠어. 도와주세요.
아이디어는 간격의 입력에 대해 10-500 og 10-100, 200-300, 400-500의 간격 목록을 반환하고 중복되는 항목이 있다면 그 간격을 제거하고 연결해야한다고 생각합니다 그래서 그들은 하나 더 커지게됩니다.
고마워요! 문제는 무효화 된 clone 메소드를 indid하고 null 객체를 ArrayList에 반환하는 것입니다. –