Java 将int数组转换为集合
我正在一步一步地学习Java。现在我知道了数组,接下来是集合 在我基于项目学习的过程中,我注意到大多数程序员选择使用Java 将int数组转换为集合,java,arrays,collections,Java,Arrays,Collections,我正在一步一步地学习Java。现在我知道了数组,接下来是集合 在我基于项目学习的过程中,我注意到大多数程序员选择使用集合而不是普通数组来消除循环并使用预定义函数(如排序等等)。因此,首先我尝试将int[]转换为集合。但是我在foreach循环中得到一个错误 import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Coll { public static void ma
集合
而不是普通数组来消除循环并使用预定义函数(如排序
等等)。因此,首先我尝试将int[]
转换为集合
。但是我在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);
}
}
}
指向arrycoll,它表示:
required `String` but found `Object`
如果我将arry
定义为String
并存储String
s,这不会是一个错误,但对于int
它不起作用。给定此消息
它表示需要的字符串,但找到了对象
您将获得两条重要信息。第一,您正在对int[]
的元素使用String
。第二,您有一个原始类型(因此整数元素被视为对象元素)。
不要使用!我很确定你想要像这样的东西
List<Integer> arrycoll = Arrays.asList(arry);
for(Integer elem:arrycoll) { // <-- Integer, not String.
System.out.println(elem);
}
到
没问题
字符串
但找到的对象
在for-each循环中,使用字符串作为元素的类型,而arrycoll是类型为Object的原始列表引用的列表
List arrycoll
您已经声明了原始列表引用的列表。您必须告诉编译器它们将是列表值
:
List<Integer> arrycoll
仅用于打印目的,只需像这样尝试;强制转换为
int[]
List arrycoll = Arrays.asList(arry);
for (Object elem : arrycoll) {
int[] iArr1 = (int[]) elem;
for (int i : iArr1) {
System.out.println(i);
}
}
使用泛型<代码>列表。此外,您正在插入一个整数并试图取回一个字符串。
Arrays
实际上支持sort
ing。您也可以将foreach语法用于普通数组。您可以使用arrays#sort(int[])
对数组进行排序,就像使用Collections.sort(List)
一样。现在您将在以下位置获得此编译器错误:arrays.asList(arry)
。类型不匹配:无法从列表转换为列表谢谢。。将其从int arry更改为Integer arry可以工作,在将其设置为列表后,Collections.reverse(arrycoll)可以工作。。但是Integer和int的区别是什么呢。。从一开始我就认为integer是扩展,int是在程序中定义数据类型的关键字@艾略特Frisch@krnaveen14否。int
是一个Integer
是一个包装类。基本类型是一种性能优化。另外,集合
(s)需要对象实例。主要区别在于整数可以用作对象的子类,例如作为通用参数存储在列表或映射中。“Integer”类还为int提供了其他方法。虽然大多数情况下由于自动装箱而隐藏,但您可以显式地在int到Integer之间强制转换。另外,一个主要的关键区别是Integer的值可以为null仍然返回此类型的列表:List
yup。这是可行的。。非常感谢。但是我不能让你的答案被接受,因为艾略特先发布了答案。没问题,欢迎。
List arrycoll
List<Integer> arrycoll
Integer[] arry = new Integer[siz];
List<Integer> arrycoll = Arrays.asList(arry);
for (Integer elem : arrycoll) {
System.out.println(elem);
}
List arrycoll = Arrays.asList(arry);
for (Object elem : arrycoll) {
int[] iArr1 = (int[]) elem;
for (int i : iArr1) {
System.out.println(i);
}
}