2012-12-10 59 views
0

我在絕對Java中做了一個練習。
問題是:編寫一個靜態方法,它包含部分填充的字符數組作爲形式參數,並刪除數組中所有重複的字母。該方法應該有兩個形式參數:一個數組參數和一個類型爲int的形式參數,它給出了使用的數組位置的數量。當信件被刪除時,其餘的信件被移動一個位置以填補空白。部分填充數組,刪除重複數組

我想到的是使用hashset,它應該是最簡單的方法。
另一種我在想的方式是將數組轉換爲列表,刪除重複的元素,然後將其傳回。
這是我的問題:如何寫代碼? (爲什麼我問它?)

public static char[] deleteRepeats(char[] array, int size) 
{ 
    ArrayList<String> newarray = new ArrayList<String>(); 
    newarray = Arrays.asList(array); 
} 

它說類型不匹配,我該如何糾正代碼?

另一個問題是:回到最初的問題,如何使用部分填充數組來實現它?

+0

'newarray = Arrays.asList(array);'你在這裏做什麼? –

+0

@Nikolay Kuznetsov我試圖將char列表轉換爲arraylist,然後我可以刪除重複的元素。 – Justin

+0

您之前定義過'newarray'嗎? –

回答

1
ArrayList<String> newarray = new ArrayList<String>(); 

是泛型類型字符串的數組列表。但是,您的參數是char類型。因此它們不可互換。這就是拋出Type Mismatch錯誤的原因。

你是對的使用Set是最簡單的方法來實現它。但是我不知道這個練習是否希望你手動完成這項工作。

不過你,如果你不能使用包裝類Character並且必須使用char類型,那麼你必須做手工轉換,如果你要得到一個Set做你更換爲你工作。

編輯:

不能使用Arrays.asList()方法來獲得一個這樣的名單。該方法將java對象作爲參數而不是原始類型。當你通過char[]時,它看到的唯一對象就是數組本身。因爲泛型不支持原始類型,所以結果是List<char[]>

+0

謝謝,在將方法簽名更改爲deleteRepeats(Character []數組後, int size),問題解決了 – Justin

+1

OK。但是你應該考慮以手動的方式來做這件事,因爲我認爲這是練習的目的...... – Thihara