您的位置:首页 > 其它

如何将ArrayList转换成整型数组

2016-04-09 10:54 316 查看
昨天在线笔试时遇到了一个类似的问题,需要将ArrayList转换成int[]。今天上网搜了好多,发现好多解决方法都是有问题的。然后在ArrayList如何转换成int[]数组?这个帖子中看到了可以解决的答案,经过自己的思考整理放到这里吧。(第一次在CSDN上写博客,有不妥处,望指教!/抱拳)

首先是看到的第一段代码,也就是原帖中二楼的回复。这个回复我在百度上也看到了好多类似的,我将代码稍加修改了一下,添加了一个int型的num,然后再加入ArrayList中去,这样的测试目的是证明了可以直接将运行程序时得到的整型元素(也可以理解为不知长度的整型数组)遍历给ArrayList,随后再以int[]存储、输出。这个起因主要是昨天京东笔试时,自己想用ArrayList存储出一个未知大小的整型数组,然后将这个数组排序后输出(可能不用这么麻烦,不过脑子抽筋就这么想下去了,最后还没搞定,大神们原谅zhazha的执拗。)不多说了,直接上代码:

import java.util.ArrayList;

public class Text {
public static void main(String args[]) {

// 将ArrayList<Integer>转化成int[]数组
ArrayList<Integer> tmpList1 = new ArrayList<Integer>();// 这个必须有,因为容器类不接受基本类型,只接受对象的引用
int num = 2;
tmpList1.add(new Integer(num));
tmpList1.add(new Integer(2));
tmpList1.add(new Integer(num + 1));

// 创建数组
Integer tmpInteger1[] = new Integer[tmpList1.size()];
int tmpInt1[] = new int[tmpList1.size()];
tmpList1.toArray(tmpInteger1);
// 赋值输出
for (int i = 0; i < tmpInteger1.length; i++) {
tmpInt1[i] = tmpInteger1[i].intValue();
System.out.print(tmpInt1[i] + " ");
}
}
}


输出结果为:2
2 3

然后看到原帖楼主并非是想这样转换的,他的想法是ArrayList<int[]>如何转换成int[]数组,当然这个问题本身就是错的,因为ArrayList容器类不接受基本类型,只接受对象的引用然后我试着。然后我试着使用第一种方法来实现,确实出现了和楼主所说一样的报错。主要的原因,我认为是存储在ArrayList<Integer[]>中的是一个个数组,不能简单的输出。

随后我就测试了原帖中的6楼的方法,所测代码如下:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

public class Text1 {
public static void main(String[] args) {
ArrayList<Integer> result = new ArrayList<Integer>();

ArrayList<Integer[]> al = new ArrayList<Integer[]>();
Integer[] i1 = { 1, 2 };
Integer[] i2 = { 3, 4 };
al.add(i1);
al.add(i2);

Iterator<Integer[]> it = (Iterator<Integer[]>) al.iterator();
while (it.hasNext()) {
Integer[] ii = (Integer[]) it.next();
result.addAll(Arrays.asList(ii));
}

int[] result_array = new int[result.size()];

for (int i = 0; i < result.size(); i++) {
result_array[i] = result.get(i);
System.out.print(result_array[i] + " ");
}

}
}


输出结果为:1 2 3 4

个人认为这段代码核心是创建迭代器Iterator<Integer[]>,利用Java中Arrays的asList()方法(可以参考Java中Arrays的asList()方法)将每个 Integer[]传给result,随后传给整型数组result_array[]。

第一次在这里写博客,希望能和大家一起讨论,一起进步!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: