【发布时间】:2020-12-07 16:02:52
【问题描述】:
我有一个 ArrayList 并想将其元素分配给一个数组。我可以使用经典的旧 java 代码来做到这一点:
List<String> list = new ArrayList<String>();
list.add("Mango");
list.add("Apple");
list.add("Banana");
list.add("Grapes");
String[] optionCode = new String[4];
// Before Java 7
System.out.println("Before Java 7:");
for (int i = 0; i < list.size(); i++) {
optionCode[i] = list.get(i);
}
for (int i = 0; i < optionCode.length; i++) {
System.out.println("Element " + i + " is: " + optionCode[i]);
}
现在我想使用新的 java 8 特性:forEach 和 lambda 方法:
list.stream().forEach(i -> {
optionCode[i] = i;
System.out.println(i);
});
它抱怨:类型不匹配:无法从 String 转换为 int 我该如何解决?
【问题讨论】:
-
也许只是
String[] optionCode = list.toArray(new String[list.size()]);? -
@ernest_k Don’t specify a non-zero initial size for
toArray,String[] optionCode = list.toArray(new String[0]);就足够了。
标签: arrays lambda foreach java-8 java-stream