[英]Converting int array to collections
我正在逐步學習Java。 現在我最多了解數組,接下來是Collections。
當我基於項目學習時,我注意到大多數程序員選擇使用Collections
而不是普通數組來消除循環並使用預定義的函數(例如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
,那不會是一個錯誤,但是對於int
來說,它是行不通的。
鑒於此消息
它聲明了必需的字符串但找到了對象
您將獲得兩個重要的信息。 第一,您將String
用於int[]
元素。 並且,您有兩個原始類型(因此您的Integer元素被視為Object元素)。 不要使用原始類型 ! 我很確定你想要這樣的東西
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];
沒問題!
將列表更改為列表,現在可以將列表中的對象靜態鍵入整數(通常,它們都被視為整數)
用Integer替換String,因為現在列表中的所有對象都是Integer類型的(不是String或其他類型)
必需的
String
但找到Object
在for每個循環中,您使用String作為元素的類型,而arrycoll是原始List引用的列表,其類型為Object。
List arrycoll
您已經聲明了原始列表引用的列表。 您必須告訴編譯器它們將是List<Integer> values
:
List<Integer> arrycoll
和
使用Integer代替String作為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);
}
僅出於打印目的,只需嘗試這樣; 轉換為int[]
List arrycoll = Arrays.asList(arry);
for (Object elem : arrycoll) {
int[] iArr1 = (int[]) elem;
for (int i : iArr1) {
System.out.println(i);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.