在ArrayList
数据对象上调用我的Merge排序方法将返回一个ArrayList
,该{完全由原始ArrayList
中的第一个条目组成(原始有9k个单独的条目,而'排序后的”与原始条目的第一个条目有9k个副本”。
我已经看过代码,但似乎无法找出原因。该函数在javax的ArrayList
的{{1}}上进行操作,并且排序标准是所述JsonObject
中的一个字段。应该比较所述字段的字符串并对其进行排序。
JsonObject
答案 0 :(得分:2)
您的错误在这里:
for (int i = midpoint; i < size; i++){
right.add(both.get(1));
}
这不会将原始列表的后半部分放到right
中。
答案 1 :(得分:1)
right
数组未正确初始化,赋值right.add(both.get(1));
不正确:有一种打字错误很容易引起注意,1
代表i
。
建议也正确处理空数组。
这是更正的版本:
public void sortDataObjects(String identifier, ArrayList<JsonObject> both) {
int size = both.size();
if (size > 1) {
ArrayList<JsonObject> left = new ArrayList<JsonObject>();
ArrayList<JsonObject> right = new ArrayList<JsonObject>();
int midpoint = size / 2;
for(int i = 0; i < midpoint; i++) {
left.add(both.get(i));
}
for (int i = midpoint; i < size; i++) {
right.add(both.get(i));
}
sortDataObjects(identifier, left);
sortDataObjects(identifier, right);
mergeSortHelper(identifier, left, right, both);
}
}