簡體   English   中英

如何通過Java中的ArrayList創建和使用稀疏數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM