2016-12-16 59 views
-1

我有一个HashMap类,它将类型为Object[]的变量“table”初始化为Object[cap],其中cap在测试中等于10。我在HashMap类以下put方法:如何使数组元素成为ArrayList?

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!任何帮助表示赞赏,因为我一整天都在圈子里尝试一百万种不同的东西。

+0

你在哪里/如何定义'table'? – Mritunjay

+0

你是否尝试将表声明为一个List数组?像“List []表”;“ – paep3nguin

+0

对象[]表;然后在构造函数中,table = new Object [cap]; – vegasbrent

回答

-1

一种直接分配阵列的元件到ArrayList方式是:

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

第二种方法是循环通过阵列元件通过用于循环,然后将其分配到作为ArrayList的:

for(int i=0;i<array.length'i++) 
{ 
    list.add(arr[i]); 
} 
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>>一旦你找到你想要的(并且如果需要初始化它)斗引用数组,你想添加的新条目ArrayList

+0

我当然看到你的观点,我已经改变了代码。感谢那!但是,我仍然留下了更加困难的错误消息问题,“方法'添加(HashEntry )'未定义类型对象。” – vegasbrent