3

我在这里找到了很多条目说

someFunc(new int[]{1,2,3});

适用于调用方法并在 for/each 循环中使用。

//======

分配到集合中怎么样?

我试过这个:

ArrayList<int[]> data = new ArrayList<int[]>();
data.add(new int[]{21, 19629});

我得到“预期的标识符”和“类型的非法开始”。

我能做些什么来完成这项工作吗?

4

5 回答 5

1

您已经制作了一个数组列表。这真的是你的意图,还是你的意思是问类似的东西

ArrayList<Integer> data = new ArrayList<Integer>();
data.add(new int[]{1,2,3});

?

无论如何,请熟悉ArraysCollections类——它们包含许多实用程序,在这种情况下会派上用场。

于 2010-09-09T13:30:34.380 回答
1

从数组中创建列表的最简单方法:

List<String> myList = Arrays.asList("Hello", "There", "Foo", "Bar);

请注意,列表是固定大小的,并由输入数组支持,因此对列表的更改实际上会写入数组。添加或删除元素可能会导致 UnsupportedOperationException。如果您打算弄乱数组,例如添加或删除元素,您可能需要将元素复制到另一个列表中

于 2010-09-09T13:35:09.867 回答
0

事实上,如果你想制作一个整数表列表,这段代码就可以工作。

public static void main(String[] args) {
    List<int[]> data = new ArrayList<int[]>();
    data.add(new int[]{21, 19629})
    for(int[] tab : data){//I loop each tab (only one here)
        for(int i: tab){//I loop each values
            System.out.println(i);
        }
    }

}

打印 21 19629

于 2010-09-09T14:25:19.263 回答
0

查看guava,尤其是 google 收藏部分。

一些集合类定义了一个静态方法of(...),它将添加给该集合的所有对象。

结合静态导入,这允许非常简洁的动态集合初始化。

例如

import static com.google.common.collect.ImmutableList.of;
...

someFunc(of("abc","def","ghi"));

将使用字符串列表调用 someFunc。

于 2010-09-09T13:41:57.430 回答
0

这可能是语言语法的限制,或者是规范中的错误,即在方法调用语法的解析中,标识符生成在表达式生成之前被发现。不要在方法调用中混合匿名数组声明。

data.add(new int[]{21, 19629});

我得到“预期的标识符”和“类型的非法开始”。

data.add(...) 中的“预期标识符”可能是由编译器期望标识符并找到解析为匿名实例的表达式引起的。有几个地方可以接受这种语法,我不确定为什么 data.add() 需要标识符。

“类型的非法开始”可能是编译器认为表达式是匿名类型声明,但语法不允许在方法调用中这样做。

尝试使用变量创建它,然后将变量作为方法 arg 传递。

int[] nums = new int[] {0,1,2};   
data.add(nums);

在寻找 ArrayList.add() 语法的更多细节时,我在某人学习 ArrayList的类似问题上找到了这个答案。JavaGlossary 有一组很好的编译时错误

于 2010-09-09T15:18:19.657 回答