Java中的自定义Arraylist对象在addAll()

时间:2017-01-08 19:50:40

标签: java list inheritance arraylist override

我有一个自定义的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)方法。我需要确定为什么我会丢失这个元素并修复该类。

0 个答案:

没有答案