簡體   English   中英

將int數組轉換為集合

[英]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];

沒問題!

  1. 將列表更改為列表,現在可以將列表中的對象靜態鍵入整數(通常,它們都被視為整數)

  2. 用Integer替換String,因為現在列表中的所有對象都是Integer類型的(不是String或其他類型)

必需的String但找到Object

在for每個循環中,您使用String作為元素的類型,而arrycoll是原始List引用的列表,其類型為Object。

List arrycoll

您已經聲明了原始列表引用的列表。 您必須告訴編譯器它們將是List<Integer> values

List<Integer> arrycoll

  1. 使用Integer代替String作為elem

  2. 替換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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM