基本上,我有一个位置的ArrayList:
ArrayList<WorldLocation> locations = new ArrayList<WorldLocation>();
在此下面,我调用了以下方法:
.getMap();
getMap()方法中的参数为:
getMap(WorldLocation... locations)
我遇到的问题是,我不确定如何将整个locations
列表传递给该方法。
我试过了
.getMap(locations.toArray())
但getMap不接受这一点,因为它不接受Objects[]。
现在如果我使用
.getMap(locations.get(0));
它将完美地工作。但我需要以某种方式通过所有的位置...当然,我可以继续添加locations.get(1), locations.get(2)
等,但是数组的大小是不同的。我只是不习惯ArrayList
的整个概念
做这件事最简单的方法是什么?我觉得我现在想得不够清楚。
发布于 2012-03-26 04:27:58
源文:Passing a list as an argument to a vararg method
使用toArray(T[] arr)
方法。
.getMap(locations.toArray(new WorldLocation[0]))
下面是一个完整的示例:
public static void method(String... strs) {
for (String s : strs)
System.out.println(s);
}
...
List<String> strs = new ArrayList<String>();
strs.add("hello");
strs.add("world");
method(strs.toArray(new String[0]));
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
发布于 2018-03-23 19:31:17
在Java 8中:
List<WorldLocation> locations = new ArrayList<>();
.getMap(locations.stream().toArray(WorldLocation[]::new));
发布于 2018-01-21 09:52:52
使用Guava的接受答案的较短版本:
.getMap(Iterables.toArray(locations, WorldLocation.class));
可以通过静态导入toArray进一步缩短:
import static com.google.common.collect.toArray;
// ...
.getMap(toArray(locations, WorldLocation.class));
https://stackoverflow.com/questions/9863742
复制相似问题