我有一个自定义的java类扩展ArrayList,它覆盖了许多方法以适应我需要的功能(我在用于引用索引的对象中有一个HashMap)。我发现当尝试使用数组填充对象时,它似乎在进程中丢失了一个元素(看似数组的顶部元素)。
对于我的生活,我无法弄清楚为什么会这样。以下是负责向此对象添加新元素的代码:
@Override
public boolean add(SiteEntry object) {
if(object == null)
return false;
int index;
//Removes previous entry
if(urlMap.containsKey(object.url())){
index = urlMap.get(object.url());
super.remove(index);
}
//Adds New Entry at the bottom of the list
super.add(object);
urlMap.put(object.url(), indexOf(object));
return true;
}
@Override
public void add(int index, SiteEntry object) {
if(object == null || index < 0 || index >= size())
return;
//Adds entry at the specified index
super.add(index, object);
int size = size();
SiteEntry temp;
//Updates URL Map
for(int i = index; i < size; i++){
temp = get(i);
urlMap.put(temp.url(), i);
}
}
public boolean addAll(SiteEntry[] entries) {
if(entries == null)
return false;
int length = entries.length;
for(int i = 0; i < length; i++)
add(entries[i]);
return true;
}
SiteEntry对象是列表所包含的对象类型,每个对象都有两个字符串(一个url和一个标题)。 urlMap是Hashmap,它将url映射到索引以便快速引用。我没有覆盖get(int index)方法。我需要确定为什么我会丢失这个元素并修复该类。