将int数组转换为集合

时间:2014-07-02 06:07:06

标签: java arrays collections

我一步一步地学习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它不是工作..

4 个答案:

答案 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)

没问题!

  1. 将列表更改为列表,现在将列表中的对象类型化为整数(通常,它们都被视为整数)

  2. 将String替换为Integer,因为现在列表中的所有对象都是Integer类型(不是String或其他任何东西)

答案 2 :(得分:0)

  

必需String但找到了Object

在for each循环中,您使用String作为元素的类型,而arrycoll是类型为Object的原始List引用的列表。

List arrycoll

您已声明原始列表引用列表。你必须告诉编译器它们将是List<Integer> values

List<Integer> arrycoll

  1. 对elem

  2. 使用Integer而不是String
  3. int[] arry = new int[siz];替换为Integer [] arry = new Integer [siz];

  4. 因此代码将成为:

            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);
    }
}