黑马程序员技术交流社区

标题: 关于数组变成集合的问题 [打印本页]

作者: 唐巍    时间: 2012-3-24 16:55
标题: 关于数组变成集合的问题
通过Arrarys工具类中的asList方法,可以将数组变成List集合。这样将数组变成集合有什么好处?
在下面代码中:
import java.util.*;
class ArraysDemo
{
        public static void main(String[] args)
        {
                String[] arr={"abc","qq","ccccc"};
                List<String> list=Arrays.asList(arr);
                sop("contains:"+list.contains("qq"));
                //list.add("aaa");    //这里数组变成集合后,为什么不能往集合里添加元素?
                sop(list);
                int[] nums={2,4,54};
                List li=Arrays.asList(nums);
                sop(li);//这里打印的是集合的哈希地址值。为什么?
        }
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}

作者: 刘元霄    时间: 2012-3-24 17:12
将数组变成集合,可以更方便操作。

list.add("aaa");    //这里数组变成集合后,为什么不能往集合里添加元素?
     String 是final的。 所以不能添加。


作者: 和心愿    时间: 2012-3-24 18:30
除以上大家说的,这个时候一定要注意到一个问题:堆污染问题
作者: 陈从宾    时间: 2012-3-24 18:36
数组变成集合目的就是为了利用集合的可扩展性
数组和集合的区别:
(1).数组的长度是固定的,在定义数组的时候,就要确定数组长度大小。而集合类在定义的时候不需要确认集合所能容纳对象的数量,也就是说集合的 大小是动态调整的。在实际应用中我们不能确认的需要存放元素数量的时候,采用集合是比较好的。容量可变是集合相对于数组的最大区别之一。
(2)数组既可以容纳基本数据类型,也可以容纳对象。而集合只能容纳对象,不容纳基本数据类型。另外,需要强调一点的是,无论是数组还是容器,当其容纳对 象的时候,存放的都是对象的引用。而数组在容纳基本数据类型的时候,持有的则是数值。
(3) 如果想在集合中容纳基本数据类型,该怎么做呢?
当我们把一个对象放到集合中,该对象好像“失去”了它的型别特征,以后在使用的时候,除非使用者知道存入对象的类型,否则无法正确使用该对象。所以要像上 面的例子一样,要进行一次强制类型的转化
StudentDemo stu2 = (StudentDemo)coll.get(0);将其转化为原来存储时的对象。





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