我在这里找到了很多条目说
someFunc(new int[]{1,2,3});
适用于调用方法并在 for/each 循环中使用。
//======
分配到集合中怎么样?
我试过这个:
ArrayList<int[]> data = new ArrayList<int[]>();
data.add(new int[]{21, 19629});
我得到“预期的标识符”和“类型的非法开始”。
我能做些什么来完成这项工作吗?
我在这里找到了很多条目说
someFunc(new int[]{1,2,3});
适用于调用方法并在 for/each 循环中使用。
//======
分配到集合中怎么样?
我试过这个:
ArrayList<int[]> data = new ArrayList<int[]>();
data.add(new int[]{21, 19629});
我得到“预期的标识符”和“类型的非法开始”。
我能做些什么来完成这项工作吗?
您已经制作了一个数组列表。这真的是你的意图,还是你的意思是问类似的东西
ArrayList<Integer> data = new ArrayList<Integer>();
data.add(new int[]{1,2,3});
?
无论如何,请熟悉Arrays
和Collections
类——它们包含许多实用程序,在这种情况下会派上用场。
从数组中创建列表的最简单方法:
List<String> myList = Arrays.asList("Hello", "There", "Foo", "Bar);
请注意,列表是固定大小的,并由输入数组支持,因此对列表的更改实际上会写入数组。添加或删除元素可能会导致 UnsupportedOperationException。如果您打算弄乱数组,例如添加或删除元素,您可能需要将元素复制到另一个列表中
事实上,如果你想制作一个整数表列表,这段代码就可以工作。
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
查看guava,尤其是 google 收藏部分。
一些集合类定义了一个静态方法of(...),它将添加给该集合的所有对象。
结合静态导入,这允许非常简洁的动态集合初始化。
例如
import static com.google.common.collect.ImmutableList.of;
...
someFunc(of("abc","def","ghi"));
将使用字符串列表调用 someFunc。
这可能是语言语法的限制,或者是规范中的错误,即在方法调用语法的解析中,标识符生成在表达式生成之前被发现。不要在方法调用中混合匿名数组声明。
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 有一组很好的编译时错误。