我一步一步地学习Java。现在我知道数组了,接下来是Collections。
当我基于项目学习时,我注意到大多数程序员选择使用Collections
而不是普通数组来消除循环并使用预定义函数(如{{1} } 以及更多)。所以,首先我要尝试将sort
转换为int[]
。但是我在Collection
循环中遇到错误......
foreach
错误如下:
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Coll {
public static void main(String[] args) {
Coll obj = new Coll();
obj.op();
}
void op() {
System.out.println("To convert Array to Collections");
Scanner getinp = new Scanner(System.in);
System.out.println("Enter the size of array : ");
int siz = getinp.nextInt();
int[] arry = new int[siz];
System.out.println("Enter the values of elements");
for (int i = 0; i < arry.length; i++) {
System.out.println("arry[" + i + "] : ");
arry[i] = getinp.nextInt();
}
List arrycoll = Arrays.asList(arry);
for (String elem : arrycoll) {
System.out.println(elem);
}
}
}
指向for(String elem : arrycoll)
,它声明:
arrycoll
如果我将required `String` but found `Object`
定义为arry
并存储String
,则不会出现错误,但对于String
它不是工作..
答案 0 :(得分:0)
鉴于此消息
它声明了必需的String但找到了对象
您将收到两条重要信息。一,您使用String
作为int[]
的元素。并且,两个你有一个原始类型(所以你的整数元素被视为对象元素)。
不要使用Raw Types!我很确定你想要像
List<Integer> arrycoll = Arrays.asList(arry);
for(Integer elem:arrycoll) { // <-- Integer, not String.
System.out.println(elem);
}
修改强>
当然要使用集合,你需要一个对象。 int
具有Integer
包装类型,因此您需要更改
int[] arry=new int[siz];
到
Integer[] arry=new Integer[siz];
答案 1 :(得分:0)
没问题!
将列表更改为列表,现在将列表中的对象类型化为整数(通常,它们都被视为整数)
将String替换为Integer,因为现在列表中的所有对象都是Integer类型(不是String或其他任何东西)
答案 2 :(得分:0)
必需
String
但找到了Object
在for each循环中,您使用String作为元素的类型,而arrycoll是类型为Object的原始List引用的列表。
List arrycoll
您已声明原始列表引用列表。你必须告诉编译器它们将是List<Integer> values
:
List<Integer> arrycoll
和
对elem
将int[] arry = new int[siz];
替换为Integer [] arry = new Integer [siz];
因此代码将成为:
Integer[] arry = new Integer[siz];
List<Integer> arrycoll = Arrays.asList(arry);
for (Integer elem : arrycoll) {
System.out.println(elem);
}
答案 3 :(得分:0)
仅供参考,请尝试这样做;施放为int[]
List arrycoll = Arrays.asList(arry);
for (Object elem : arrycoll) {
int[] iArr1 = (int[]) elem;
for (int i : iArr1) {
System.out.println(i);
}
}