黑马程序员技术交流社区

标题: 泛型和ArrayList的区别是什么,有什么优点 [打印本页]

作者: 梦ing    时间: 2012-12-21 21:06
标题: 泛型和ArrayList的区别是什么,有什么优点
泛型和ArrayList的区别是什么,有什么优点

作者: 王晨    时间: 2012-12-21 21:23
ArrayList 可以添加任何类型,添加/删除需要拆箱、装箱。

泛型则通过允许指定泛型类或方法操作的特定类型。其优点是,减少了类型强制转换的需要和运行时错误的可能性。泛型提供了类型安全但没有增加多个实现的开销。
作者: 冯鸿昌    时间: 2012-12-21 21:24
ArrayList将所操作人对象看作object,所以要涉及到box与unbox的过程。泛型在对象初始化的过程中,将确定所所含的元素类型(类似与C++的template).这个过程可以查看*.il文件。
作者: 臧盼    时间: 2012-12-21 21:31
泛型就是将类型作为参数传递给类的声明;

泛型的优点:能够创建单一用途的实例,因此能在编译时进行严格的类型检查,这是集合框架最重要的特点。

在运行期不必进行类型的转换,泛型是编译时的概念,运行时没有泛型;编译类型的泛型和运行时类型的泛型一定要一致,泛型没有多态;不能使用原始类型;

泛型的通配符‘?’:用来代替任何的类型,例如使用通配符来实现print方法;public static void print(GenList<?> list) {})

受限泛型指的是参数的取值范围是受到限制的,extends关键字不仅可以用来声明类的继承关系,也可以用来声明类型参数(type parameter)的受限关系;它表示一个“<=”的关系;而super表示一个>=的关系;

类的静态方法不能使用泛型,因为泛型类是在创建对象的时候产生的。

而ArrayList是一个集合,是用来存储对象的,ArrayList底层数据结构是数组,查询快,增删慢。线程不安全,效率高。
集合使用泛型的好处:能把运行时的类型转换错误提升到编译时发生错误,提高了程序的健壮性。
作者: 阮佳佳    时间: 2012-12-21 22:48
集合泛型的:List<T>和Dictionary<K,V>。
ArrayList是数组,他和上两个泛型集合的区别在于,他属于弱类型集合而泛型集合属于强类型集合,ArrayList中存放的类型都是Object的,虽然方便,但也可能造成隐患,比如存入存取一个不同类型的值就会发生类型错误,而泛型集合是在定义时就确定类型的,List<T>,这样就限制了List存取的类型,极大的避免的出错的可能性。这也是强类型集合的优势,从你新建一个类的命名空间来看,微软已经默认帮你引入了System.Collection.Generic,这说明微软也是希望我们多多使用泛型集合的。!
作者: 郭小伟    时间: 2012-12-22 12:54
优点在于可以存放任何类型,都属于object类型,读的时候需要强转成对应的类型。      而list 定义的时候就要规定存放的 类型,这样存的时候只能存这个类型的!
作者: 苗昆明    时间: 2012-12-25 16:25
泛型嘛,它约束了类型,所以使类型更安全,而且在使用集合里元素的时候ArrayList取出得经过拆箱,而泛型它设定了类型,所以它的性能比普通集合高!




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