黑马程序员技术交流社区
标题: 集合转为数组的问题 [打印本页]
作者: 乔青山 时间: 2014-3-7 00:05
标题: 集合转为数组的问题
本帖最后由 乔青山 于 2014-3-7 09:17 编辑
毕老师讲集合转为数组的最后讲到:集合转为数组是为了限定对集合中的元素进行增删操作,只要获取这些元素即可。
请问下面这个小程序:
ArrayList<String> list = new ArrayList<String>();
list.add("2");
list.add("3");
String[] str = list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(str));
str = new String[1];
System.out.println(Arrays.toString(str));
System.out.println(list);
这算不算删除了元素?运行结果:
[2, 3]
[null]
[2, 3]
请问这个限定怎么体现的呢。。添加是不可能的,因为转为数组的时候已经确定数组长度了,那么限定删除怎么体现的呢?
能不能写一个小程序体现一下?
多谢了~!
另外,把一个数组转为集合,再把这个集合转为数组的时候为什么报了异常?
代码如下:
String[][] str1 = {{"1"},{"2"},{"1"},{"3"}};
List<String[]> list = Arrays.asList(str1);
String[] str2 = list.toArray(new String[list.size()]);
想明白了。。删除更改等操作都可以使用,但是不会对集合中的元素产生影响
第二个是我的str2数组声明错了,再次转为数组应该是二维
作者: 午夜b'Boy 时间: 2014-3-7 01:10
new一个新数组不是删除元素!集合转为数组,再以集合的形式提供出去,限定对集合中的元素进行增删操作,
作者: My_work 时间: 2014-3-7 01:18
对于int[]数组不能直接这样做,因为asList()方法的参数必须是对象。应该先把int[]转化为Integer[]。对于其他primitive类型的数组也是如此,必须先转换成相应的wrapper类型数组。
- int[] numbers = {7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4};
- int size = numbers.length;
- Integer[] array = new Integer[size];
- for (int i = 0; i < numbers.length; i++) {
- Integer integer = numbers[i];
- array[i] = integer;
- }
- List list = Arrays.asList(array);
复制代码
作者: 乔青山 时间: 2014-3-7 08:45
ArrayList<String> al = new ArrayList<String>();
al.add("abc");
al.add("ac");
String[] str = al.toArray(new String[al.size()]);
System.out.println(Arrays.toString(str));
str = null;
System.out.println(Arrays.toString(str));
System.out.println(al);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |