【发布时间】:2021-03-02 05:17:46
【问题描述】:
我的任务是编写自己的实现来从数组中删除重复对象。数组未排序。
例如,我有这个对象数组
ItemsList[] objects = {
new ItemsList("ob1"),
new ItemsList("ob2"),
new ItemsList("ob2"),
new ItemsList("ob1"),
new ItemsList("ob3")
};
"ob1" stands for itemId
我的目标是获得像 ["ob1", "ob2", "ob3"] 这样的结果数组,但在尝试查找未加倍的对象并将其添加到数组时给出 NullPointerException。
注意:不能使用Set、HashSet、ArrayList、Arrays.copyOf、Sort等或迭代器等任何其他工具。
到目前为止,我已经这样做了:
public String[] removeDuplicates(ItemsList[] objects) {
String[] noDubs = new String[objects.length];
int len = objects.length;
int pos = 0;
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (objects[i].getItemId().equals(objects[j].getItemId())) {
noDubs[pos] = objects[i].getItemId();
pos++;
}
else {
//NullPointerException given
if (!objects[i].getItemId().equals(objects[j].getItemId()) && !objects[i].getItemId().contains(noDubs[i])) {
noDubs[pos] = objects[i].getItemId();
pos++;
}
}
}
}
String[] result = new String[pos];
for(int k = 0; k < pos; k++) {
result[k] = noDubs[k];
}
return result;
}
getItemId 是类 ItemsList 方法
【问题讨论】: