当前位置: 首页 > 面试题库 >

如何创建ArrayList(ArrayList)从Java中的数组(int [])

孙永思
2023-03-14
问题内容

我看到了一个问题:从数组创建ArrayList

但是,当我使用以下代码尝试该解决方案时,它并不能在所有情况下都有效:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public class ToArrayList {

    public static void main(String[] args) {
        // this works
        String[] elements = new String[] { "Ryan", "Julie", "Bob" };
        List<String> list = new ArrayList<String>(Arrays.asList(elements));
        System.out.println(list);

        // this works
        List<Integer> intList = null;
        intList = Arrays.asList(3, 5);
        System.out.println(intList);

        int[] intArray = new int[] { 0, 1 };
        // this doesn't work!
        intList = new ArrayList<Integer>(Arrays.asList(intArray));
        System.out.println(intList);
    }
}

我在这里做错了什么?代码不应该intList = newArrayList<Integer>(Arrays.asList(intArray));编译就好吗?


问题答案:

问题在

intList = new ArrayList<Integer>(Arrays.asList(intArray));

是,int[]被认为是一个单一的Object,因为基本数组从延伸实例Object。如果你有这样的工作Integer[],而不是int[]因为现在你要发送的数组Object

Integer[] intArray = new Integer[] { 0, 1 };
//now you're sending a Object array
intList = new ArrayList<Integer>(Arrays.asList(intArray));

根据您的评论:如果您仍然想使用一个int[](或另一个原始类型的数组)作为主要数据,那么您需要使用wrapper类创建一个附加数组。对于此示例:

int[] intArray = new int[] { 0, 1 };
Integer[] integerArray = new Integer[intArray.length];
int i = 0;
for(int intValue : intArray) {
    integerArray[i++] = intValue;
}
intList = new ArrayList<Integer>(Arrays.asList(integerArray));

但是由于您已经在使用for循环,所以我不介意使用临时包装器类数组,只需将您的项目直接添加到列表中:

int[] intArray = new int[] { 0, 1 };
intList = new ArrayList<Integer>();
for(int intValue : intArray) {
    intList.add(intValue);
}


 类似资料:
  • 我已经看到了这个问题:从数组创建ArrayList 然而,当我用下面的代码尝试该解决方案时,它并不是在所有情况下都有效: 我做错了什么?代码不应该

  • 问题内容: 我有一个像这样初始化的数组: 我想将此数组转换为ArrayList 问题答案:

  • 本文向大家介绍如何从Java ArrayList创建字符串?,包括了如何从Java ArrayList创建字符串?的使用技巧和注意事项,需要的朋友参考一下 要将ArrayList的内容转换为String,创建一个StringBuffer对象,将ArrayList的内容附加到该对象,最后使用toString()方法将StringBuffer对象转换为String 。 示例 输出结果

  • 问题内容: 我想创建一个二维数组,每个单元格都是一个! 我认为这是定义,但我不能在其中添加任何内容,这些定义是真的吗? 要么 请帮我 问题答案: 我想创建一个二维数组,每个单元格都是一个ArrayList! 如果要创建一个2D 数组 ,则可以执行以下操作:

  • 如何创建包含ArrayList的二维数组?比如:

  • 问题内容: 如何在Java中获取一个数组切片?具体来说,我想做这样的事情: 因此,我希望这可以正常工作,但是Java返回-,因此不兼容。而且当我尝试投射它时,Java不会让我这么做。我需要-该怎么办? 问题答案: 在Java中,优良作法是在API中使用接口类型而不是具体的类。 您的问题是您正在使用(可能在很多地方)应该使用的地方。结果,您为自己创建了问题,并不必要地限制了列表为。 这是您的代码应如