A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔青山 中级黑马   /  2014-3-7 00:05  /  1217 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 乔青山 于 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数组声明错了,再次转为数组应该是二维



评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

倒序浏览
午夜b'Boy 来自手机 中级黑马 2014-3-7 01:10:06
沙发
new一个新数组不是删除元素!集合转为数组,再以集合的形式提供出去,限定对集合中的元素进行增删操作,
回复 使用道具 举报

对于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);
复制代码



评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
午夜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);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马