黑马程序员技术交流社区

标题: 集合转为数组的问题 [打印本页]

作者: 乔青山    时间: 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类型数组。

  1. int[] numbers = {7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4};
  2. int size = numbers.length;
  3. Integer[] array = new Integer[size];
  4. for (int i = 0; i < numbers.length; i++) {
  5.   Integer integer = numbers[i];
  6.   array[i] = integer;
  7.   }
  8. List list = Arrays.asList(array);
复制代码




作者: 乔青山    时间: 2014-3-7 08:45
午夜b'Boy 发表于 2014-3-7 01:10
new一个新数组不是删除元素!集合转为数组,再以集合的形式提供出去,限定对集合中的元素进行增删操作, ...

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