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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 youngster 于 2013-5-6 20:51 编辑

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

7 个回复

倒序浏览
因为数组的长度是固定的,如果使用集合的方法对其进行增删操作,会发生异常!
回复 使用道具 举报
因为数组的长度是固定。
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);
        }   
}
  
回复 使用道具 举报
记得毕老师的视频中已经讲明白了,特意讲这个地方了哦   再稍微看一下吧

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

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

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

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

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

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

谢谢大家的回复了。
回复 使用道具 举报
谢谢大家的回复,辛苦了
回复 使用道具 举报
youngster 发表于 2013-5-6 20:48
谢谢大家的回复,辛苦了

恩 不客气。
回复 使用道具 举报
66666666.楼主的思想学习了!!攒!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马