[英]How do I create and use a sparse array through ArrayList in Java?
我整整一天都在研究SO和其他地方,並嘗試我能想到的一切。 我現在只使用Java 2周了,所以我對此非常陌生,完全感到困惑。 當我嘗試使用ArrayList創建具有不確定長度的稀疏數組時,我不斷收到錯誤消息(我從用戶那里獲取輸入以確定相應的密集數組的長度和密度)。
ArrayList<Double> SparseArray = new ArrayList<Double>[]{
//private ArrayList<ArrayList<Double>> SparseArray;
for (int i = 0; i < DenseArray.length; i++){
if (DenseArray[i] != 0){
SparseArray.add(DenseArray[i]);
我的代碼的前兩行是我嘗試過的兩種不同的方法,都出現以下錯誤:
Multiple markers at this line
- Syntax error, parameterized types are only available if source level is 1.5
or greater
- Syntax error, parameterized types are only available if source level is 1.5
or greater
- Syntax error, insert ";" to complete FieldDeclaration
- Syntax error, insert "ArrayInitializer" to complete
ArrayCreationWithArrayInitializer
(編輯:ArrayInitializer錯誤是新的,直到現在我還沒有看到。如果能解決我的問題,我該如何使用它?)
甚至我的“ import java.util.ArrayList;” 給我這個:
Multiple markers at this line
- Syntax error on token(s), misplaced
construct(s)
- Syntax error on token ".", = expected
任何想法將不勝感激! :)
編輯:我照顧了編譯器問題。 我仍然不知道如何獲取它以將DenseArray識別為變量(它在上面的同一函數中使用過,只不過它現在將ArrayList視為一個單獨的函數)。 我來自Python世界,在發生這些問題時,我只會默認使用全局變量,但我不知道在Java中該怎么做。是否有等效的Java全局變量或類似的東西?
Java泛型在1.5中問世。 這意味着除非使用1.5或更高版本,否則將無法使用它們。 只需升級Java運行時,代碼就可以正常編譯。
如果您希望代碼無需升級即可編譯(不推薦),則只需刪除泛型即可。 只需刪除所有<Double>
,並確保您對類型轉換非常小心。
錯誤訊息
- Syntax error, parameterized types are only available if source level is 1.5 or greater
可能是由於Eclipse中的編譯器符合性級別設置不正確所致。
Menu: Window -> Preferences (at the bottom of the menu)
在彈出窗口中,單擊Java
,這將打開一個子列表,您在其中單擊Compiler
。
在此處,選擇“編譯器符合級別”以顯示1.7(或1.6)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.