如何通过Java中的ArrayList创建和使用稀疏数组?

时间:2014-04-20 05:50:27

标签: java arraylist

我整天都在这里,研究SO和其他地方并尝试我能想到的一切。我现在只用了两个星期的Java,所以我对此非常新,并且完全糊涂了。当我尝试使用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全局变量或类似的东西?

2 个答案:

答案 0 :(得分:0)

Java泛型出现在1.5中。这意味着除非使用1.5或更高版本,否则您将无法使用它们。只需升级Java运行时,代码就可以正常编译。

如果您希望在不升级的情况下编译代码(不推荐),那么只需删除泛型。只需删除所有<Double>,并确保您对类型转换非常小心。

答案 1 :(得分:0)

错误消息

- 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)。