gpt4 book ai didi

java - arraylist 的第一个对象变成 null,似乎无法弄清楚为什么

转载 作者:行者123 更新时间:2023-12-02 03:16:47 26 4
gpt4 key购买 nike

所以问题来了。我的间隔连接函数似乎将传递给它的第一个值变为空,看在上帝的份上,我无法弄清楚为什么。

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;
}

它应该返回 3 个间隔:10、100、200,300 和 400,500。但我似乎得到了null。无法弄清楚我哪里出错了。请帮忙。

这个想法是,对于任何间隔输入,它都会返回一个间隔列表,要么是 10-500,要么是 10-100、200-300、400-500,如果有重复,则应该将其剥离并连接起来,这样它们变得更大。

最佳答案

我假设您的意思是 ArrayList返回不为 null,但包含 null 元素( Interval s),因为对 concatinatedIntervals 的引用只设置为等于构造函数调用,因此不能为 null。正如您所写 Clone() 显然,您实现了自己的克隆方法而不是clone() 。唯一的地方 Interval s 被添加到列表中,添加在上一行中分配了构造函数调用结果的引用(因此不能为空),或者添加对 Clone() 的调用结果。因此Clone()方法是唯一明显的嫌疑点。

您是否尝试过使用调试器逐行执行代码,检查所有 Interval 的值添加了吗?

关于java - arraylist 的第一个对象变成 null,似乎无法弄清楚为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40186425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com