2016-12-16 57 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