如何将数组元素设为ArrayList?

时间:2016-12-16 04:29:35

标签: java

我有一个HashMap类,它将Object[]类型的变量“table”实例化为Object[cap],其中cap在测试中等于10。我在HashMap类中有以下put方法:

public void put(K key, V value){
    HashEntry<K, V> newEntry = new HashEntry<K, V>(key, value);
    location = Math.abs(key.hashCode()) % capacity;
    //System.out.println(location);

    if(table[location] == null){
        table[location] = new ArrayList<HashEntry<K, V>>();
        table[location] = newEntry;
        numItems++;
    }
    else {
        table[location] = newEntry;
    }
}

为了使ArrayList有效,我应该使用table[location].add(newEntry),而不是table[location] = newEntry。但是,如果我使用前者,我会收到消息“方法add(HashEntry<K,V>)未定义类型Object。”当我使用后者时,我当然无法获得正确的输出,因为没有“bucket”来从中检索信息。我更喜欢将ArrayList用于二维数组,因为我根本没有得到2D arrays!任何帮助都是值得赞赏的,因为我整天都在尝试一百万种不同的东西。

2 个答案:

答案 0 :(得分:0)

if(table[location] == null){
    table[location] = new ArrayList<HashEntry<K, V>>();
    table[location] = newEntry;
    numItems++;
}
else {
    table[location] = newEntry;
}

这是错的。它应该是:

if(table[location] == null){
    table[location] = new ArrayList<HashEntry<K, V>>();
}
table[location].add(newEntry);

该表是对ArrayList<HashEntry<K,V>>的引用数组一旦找到了所需的存储桶(并在需要时对其进行了初始化),您希望新条目添加到{{ 1}}。

答案 1 :(得分:-1)

将Array的元素直接分配给ArrayList的一种方法是:

 String array[]={"Abc","Def"};
 List<String> list=Arrays.asList(array);

第二种方法是通过for循环遍历数组元素,然后将它们分配给arrayList:

for(int i=0;i<array.length'i++)
{
     list.add(arr[i]);
}