如何将ArrayList转换成整型数组
2016-04-09 10:54
316 查看
昨天在线笔试时遇到了一个类似的问题,需要将ArrayList转换成int[]。今天上网搜了好多,发现好多解决方法都是有问题的。然后在ArrayList如何转换成int[]数组?这个帖子中看到了可以解决的答案,经过自己的思考整理放到这里吧。(第一次在CSDN上写博客,有不妥处,望指教!/抱拳)
首先是看到的第一段代码,也就是原帖中二楼的回复。这个回复我在百度上也看到了好多类似的,我将代码稍加修改了一下,添加了一个int型的num,然后再加入ArrayList中去,这样的测试目的是证明了可以直接将运行程序时得到的整型元素(也可以理解为不知长度的整型数组)遍历给ArrayList,随后再以int[]存储、输出。这个起因主要是昨天京东笔试时,自己想用ArrayList存储出一个未知大小的整型数组,然后将这个数组排序后输出(可能不用这么麻烦,不过脑子抽筋就这么想下去了,最后还没搞定,大神们原谅zhazha的执拗。)不多说了,直接上代码:
输出结果为:2
2 3
然后看到原帖楼主并非是想这样转换的,他的想法是ArrayList<int[]>如何转换成int[]数组,当然这个问题本身就是错的,因为ArrayList容器类不接受基本类型,只接受对象的引用然后我试着。然后我试着使用第一种方法来实现,确实出现了和楼主所说一样的报错。主要的原因,我认为是存储在ArrayList<Integer[]>中的是一个个数组,不能简单的输出。
随后我就测试了原帖中的6楼的方法,所测代码如下:
输出结果为:1 2 3 4
个人认为这段代码核心是创建迭代器Iterator<Integer[]>,利用Java中Arrays的asList()方法(可以参考Java中Arrays的asList()方法)将每个 Integer[]传给result,随后传给整型数组result_array[]。
第一次在这里写博客,希望能和大家一起讨论,一起进步!
首先是看到的第一段代码,也就是原帖中二楼的回复。这个回复我在百度上也看到了好多类似的,我将代码稍加修改了一下,添加了一个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[]。
第一次在这里写博客,希望能和大家一起讨论,一起进步!
相关文章推荐
- Codeforces Round #305 (Div. 2) A
- postMan 使用
- Python之路【第十八篇】Django小项目webQQ实现
- 04.——水仙花数,字母大小写转换算法
- hbase与zookeeper版本对应关系
- hdu 4274 Spy's Work
- 父、子进程同步的5个例程的两种实现方式
- 细节要多注意
- shell 调试手段总结
- iOS开发之网络编程:Socket网络编程
- python中if __name__ == '__main__': 的解析
- scanf,输入 Go west, young man!
- poj 2524 Ubiquitous Religions
- C#获取路径方法
- A + B Problem
- LoadRunner JAVA Vuser协议手工写脚本Failed to find Classes.zip entry in Classpath问题
- Main 程序的入口要做哪些事情
- 酷播高清视频点播系统
- HDU 1014:Uniform Generator
- LABVIEW调用捷通TTS ActiveX控件实现中文文本转语音