我看到了一个问题:从数组创建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中使用接口类型而不是具体的类。 您的问题是您正在使用(可能在很多地方)应该使用的地方。结果,您为自己创建了问题,并不必要地限制了列表为。 这是您的代码应如