我有以下簡單的函數,它返回字符串數組中String
的位置(String[]
)。如何將函數轉換爲擴展現有Java類的方法
private int getIndexOf(String needle, String[] haystack) {
int indexOfNeedle = -1;
for (int index=0;index<haystack.length;index++) {
if (haystack[index].equals(needle)) {
indexOfNeedle = index;
break;
}
}
}
我想轉換這是ArrayList類的方法,這樣我可以把它叫做:
String[] myArray = {"red","green","blue"};
int indexOfGreen = myArray.getIndexOf("green");
(我知道現在有一些圖書館,我可以包括包括indexOf
但重塑這對我來說也是一個教訓。)
我相信這個方法會涉及到extends ArrayList
,這可能是我需要擴展的類,所以我需要修改上面的函數以適應該擴展類。
而不是在方法版本中使用haystack
,我也希望能夠在this
內引用該方法被調用的數組對象進行搜索。
我也在想,我可能需要用這個新的擴展類數組替換我的String []數組(或者我可以使用重寫將我的新方法包含在Excited String Array類中?)。
正如我所說,這是爲了幫助我學習如何在Java中做到這一點,所以練習本身可能看起來有點沒有意義並且問題的關鍵並不是真正瞭解如何找到位置一個數組中的元素 - 這只是一個例子。
數組不是數組列表。你不能將方法添加到數組中。而且這個代碼不會編譯。 –
(注意:最簡單的方法是'Arrays.asList(haystack).indexOf(needle)')。 –
「我相信這個方法會涉及到擴展ArrayList,」這幾乎*不是正確的答案。在課堂以外的方法中沒有任何傷害或犯規:將列表作爲參數進行搜索,可以將該方法應用於* any *列表,而不僅僅是您構建的特殊列表中的一個。換句話說,課堂以外的方法更具可重用性。 –