黑马程序员技术交流社区

标题: 用Arrays工具类中的asList方法将数组变成集合,为什么不能... [打印本页]

作者: youngster    时间: 2013-5-6 16:04
标题: 用Arrays工具类中的asList方法将数组变成集合,为什么不能...
本帖最后由 youngster 于 2013-5-6 20:51 编辑

用集合框架工具类中的Collections.toArray()将集合变成数组后对其进行了限制(不能进行增删)
但是通过
List<Integer> list=Arrays.asList(arr);将数组变成了集合,就应该有集合的特性,但是为什么java不能对其进行增删操作

作者: 翟宝海    时间: 2013-5-6 16:18
因为数组的长度是固定的,如果使用集合的方法对其进行增删操作,会发生异常!
作者: 柳汉杰    时间: 2013-5-6 18:48
因为数组的长度是固定。
Arrays介绍:
Arrays用于操作数组的工具类,里面都是静态方法。
Arrays中方法介绍示例:
import java.util.*;
class  ArraysDemo
{
        public static void main(String[] args)  
        {
               int[] arr = {2,4,5};
               //将数组转成字符串输出
               System.out.println(Arrays.toString(arr));   
               String[] arr = {"abc","cc","kkkk"};     
               注意:将数组变成集合,不可以使用集合的增删方法。
              因为数组的长度是固定。
                List<String> list = Arrays.asList(arr);//将数组转成集合
               sop("contains:"+list.contains("cc"));//可以
               //list.add("qq");//不可以,出现异常
               int[] nums1 = {2,4,5};
               Integer[] nums2 = {2,4,5};
  
               List li = Arrays.asList(nums1);
               sop(li);//打印结果nums1的地址
               List li = Arrays.asList(nums2);
               sop(li);//打印结果是:[2,4,5]正常                  
        }
        public static boolean myContains(String[] arr,String key)
        {
               for(int x=0;x<arr.length; x++)
               {
                       if(arr[x].equals(key))
                               return true;
               }
               return false;
        }
         
        public static void sop(Object obj)
        {
               System.out.println(obj);
        }   
}
  

作者: 刘学明       时间: 2013-5-6 20:24
记得毕老师的视频中已经讲明白了,特意讲这个地方了哦   再稍微看一下吧

把数组变成list集合的好处:可以使用集合的思想和方法来操作数组中的元素。

注意:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定。如果你增删。那么会发生UnsupportedOperationException 。

除了增删类的 不用动数组的元素下标的 一般都可以使用
如contains方法 get方法 indexOf()方法 subList()等。
作者: youngster    时间: 2013-5-6 20:48
刘学明    发表于 2013-5-6 20:24
记得毕老师的视频中已经讲明白了,特意讲这个地方了哦   再稍微看一下吧

把数组变成list集合的好处:可以 ...

原则上我知道是这么回事,但是我当时是疑问为什么java让数组变成集合了却又不能增删(原则上不能增删会抛异常我是知道的。。。),

我捉摸了下应该是:把数组转换成集合只是想要使用集合中丰富的方法来操作数组的数据,而最终数组数据不能被改变,就好比拿了东西使用后要原封不动换回去。

谢谢大家的回复了。
作者: youngster    时间: 2013-5-6 20:48
谢谢大家的回复,辛苦了
作者: likairoudou    时间: 2013-7-20 12:44
youngster 发表于 2013-5-6 20:48
谢谢大家的回复,辛苦了

恩 不客气。
作者: 呼雁潇    时间: 2016-1-29 19:55
66666666.楼主的思想学习了!!攒!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2