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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦ing 中级黑马   /  2012-12-21 21:06  /  2797 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型和ArrayList的区别是什么,有什么优点

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

6 个回复

倒序浏览
ArrayList 可以添加任何类型,添加/删除需要拆箱、装箱。

泛型则通过允许指定泛型类或方法操作的特定类型。其优点是,减少了类型强制转换的需要和运行时错误的可能性。泛型提供了类型安全但没有增加多个实现的开销。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
ArrayList将所操作人对象看作object,所以要涉及到box与unbox的过程。泛型在对象初始化的过程中,将确定所所含的元素类型(类似与C++的template).这个过程可以查看*.il文件。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
泛型就是将类型作为参数传递给类的声明;

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

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

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

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

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

而ArrayList是一个集合,是用来存储对象的,ArrayList底层数据结构是数组,查询快,增删慢。线程不安全,效率高。
集合使用泛型的好处:能把运行时的类型转换错误提升到编译时发生错误,提高了程序的健壮性。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
集合泛型的:List<T>和Dictionary<K,V>。
ArrayList是数组,他和上两个泛型集合的区别在于,他属于弱类型集合而泛型集合属于强类型集合,ArrayList中存放的类型都是Object的,虽然方便,但也可能造成隐患,比如存入存取一个不同类型的值就会发生类型错误,而泛型集合是在定义时就确定类型的,List<T>,这样就限制了List存取的类型,极大的避免的出错的可能性。这也是强类型集合的优势,从你新建一个类的命名空间来看,微软已经默认帮你引入了System.Collection.Generic,这说明微软也是希望我们多多使用泛型集合的。!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
优点在于可以存放任何类型,都属于object类型,读的时候需要强转成对应的类型。      而list 定义的时候就要规定存放的 类型,这样存的时候只能存这个类型的!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
泛型嘛,它约束了类型,所以使类型更安全,而且在使用集合里元素的时候ArrayList取出得经过拆箱,而泛型它设定了类型,所以它的性能比普通集合高!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马