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

如何在Java中通过ArrayList创建和使用稀疏数组?,java,arraylist,Java,Arraylist,我整天都在做这件事,研究某某和其他地方,尝试我能想到的一切。我现在只使用java两周了,所以我对这一点非常陌生,完全困惑。当我尝试使用ArrayList创建长度不确定的稀疏数组(我从用户那里获取输入以确定相应的密集数组的长度和密度)时,我总是会出错 (编辑:ArrayInitializer错误是新的,我直到现在才看到。如果这能解决我的问题,我该如何使用它?) 甚至我的“import java.util.ArrayList;”也给出了以下信息: Multiple markers at this l

我整天都在做这件事,研究某某和其他地方,尝试我能想到的一切。我现在只使用java两周了,所以我对这一点非常陌生,完全困惑。当我尝试使用ArrayList创建长度不确定的稀疏数组(我从用户那里获取输入以确定相应的密集数组的长度和密度)时,我总是会出错

(编辑:ArrayInitializer错误是新的,我直到现在才看到。如果这能解决我的问题,我该如何使用它?)

甚至我的“import java.util.ArrayList;”也给出了以下信息:

Multiple markers at this line
- Syntax error on token(s), misplaced 
 construct(s)
- Syntax error on token ".", = expected
任何想法都将不胜感激!:)


编辑:我已经解决了编译器的问题。我仍然不知道如何让它将Densarray识别为一个变量(它在上面的同一个函数中使用过,只是现在它将ArrayList作为一个单独的函数处理)。我来自Python世界,当这些问题发生时,我会默认使用全局变量,但我不知道在java中该怎么做。。是否有java全局变量等价物或类似的东西?

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

如果希望代码在编译时不升级(不推荐),那么只需删除泛型即可。只需删除所有的
,并确保小心您的类型转换。

错误消息

- 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


在这里,选择“Compiler compliance level”以显示1.7(或1.6)。

您的第一行没有多大意义(末尾的
{
是什么意思?)。如果不在上下文中查看,
import
语句上的错误,则无法进行诊断;
import
s必须位于文件顶部,在任何类定义之外。此外,您似乎正在使用一些奇怪的编译器设置;您的编译器显然知道1.5,但没有使用它。您是如何编译代码的我在结尾添加了{,因为它一直在告诉我。我知道,我也不认为我应该在那里有一个,但是eclipse(这就是我正在使用的)似乎非常坚持..我不知道编译器设置是什么或是什么意思。请检查中描述的设置。您是从头创建此项目还是从现有项目开始的?顺便说一句,您可能想尝试一开始不使用IDE,只是为了了解幕后的工作情况。这将使IDE的功能更加强大r你说得更有道理。除了Java的问题:如果你压缩一个“稀疏数组”按照您显然打算的方式,您会丢失元素在原始数组中的索引位置的信息。通常,这是高度相关的,除非您有一个恰好存储在数组中的值列表,可以从中筛选出零,因为它们不相关。大多数情况下,错误消息不是最好的“程序员建议”用于修复粗略的语法错误。在
新建ArrayList
之后,您不会放一对括号
[]
,而是放一对括号
()
!编译器知道泛型在源代码级别1.5或更高版本可用;因此它似乎是一个合适的版本,但命令行上的
-source
参数不正确。@JasonC我认为你是对的。我认为他的项目设置中存在一些错误配置。因此我不应该在以后重新下载javal、 .?@user3345626只需在命令行中运行
Java-version
来检查您的Java版本。@user3345626您的项目设置已关闭。只需更改您的运行时环境,使其版本大于或等于1.5或1.8,我们现在知道您有。啊。是的,它设置为1.4。我将其更改为1.7,但它似乎不起作用。。。我不知道我做错了什么,但当我打开菜单进行检查时,它已经被更新到1.7(1.8不是一个选项),不管我如何让编译器部分工作。我仍然不知道如何让它识别Densarray(我认为上面在同一个函数中定义和使用了)。除非ArrayList是它自己的函数)作为一个变量。如果没有任何指示它在何处以及如何定义,就不可能知道。在另一个方法访问它的类中,需要有类似于
double[]DenseArray=new double[123];
的东西。--Java中没有“全局数据”这样的东西。
- Syntax error, parameterized types are only available if source level is 1.5 or greater
Menu: Window -> Preferences (at the bottom of the menu)