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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 274997322 中级黑马   /  2013-6-15 01:13  /  3098 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天做题分别用到这两个集合,发现都没有问题,但是不知道这两个有什么区别,再选择应该如何取舍?

14 个回复

正序浏览
本帖最后由 无__畏 于 2013-6-15 16:10 编辑

ArrayList存入对象时类型为Object,编译时候不检查类型,使用时候会有频繁的拆箱装箱。 arraylist就当是一种复杂的数组,只不过比数组多了一些操作add、remove等。  
而List<t>  必须制定t的类型,类型一致,效率要高。是一个泛型集合

回复 使用道具 举报
本帖最后由 无__畏 于 2013-6-15 16:14 编辑

。。。。...
回复 使用道具 举报
关关雎鸠 发表于 2013-6-15 15:16
你把这放到VS中试试,看能不能用。。

哎呀。。。我错了  我进错专区了不好意思  我的观点是java上的 java是不允许new接口的

点评

噗,  发表于 2013-6-16 23:57
回复 使用道具 举报
本帖最后由 关关雎鸠 于 2013-6-15 15:21 编辑
a767175432 发表于 2013-6-15 13:02
这种写法是错误的 编译都编译不过去  List是一个接口 接口是没有构造器的不允许直接new 只能是new它的实 ...
  1. List<int> list = new List<int>();
  2.             list.Add(1);
  3.             list.Add(2);
  4.             for (int i = 0; i < list.Count; i++) {
  5.                 Console.WriteLine(list[i]);
  6.             }
  7.             Console.ReadKey();
复制代码
你把这放到VS中试试,看能不能用。。

不知道你哪儿看的List<T>是接口。。它是继承接口的类并不是接口。

QQ拼音截图未命名.png (12.14 KB, 下载次数: 0)

QQ拼音截图未命名.png
回复 使用道具 举报
关关雎鸠 发表于 2013-6-15 11:45
别人写的是List list = new List();

这有错误吗?

这种写法是错误的 编译都编译不过去  List是一个接口 接口是没有构造器的不允许直接new 只能是new它的实现类向上转型为List类型 你再看看面向对象关于接口方面的知识。纠正一下
回复 使用道具 举报
a767175432 发表于 2013-6-15 11:34
我是回复他回复我的这句话  List list = new List() 这是错误的

别人写的是List<int> list = new List<int>();

这有错误吗?
回复 使用道具 举报
关关雎鸠 发表于 2013-6-15 11:26
你把人家问的看清楚,不要误人子弟。。

我是回复他回复我的这句话  List list = new List() 这是错误的
回复 使用道具 举报
a767175432 发表于 2013-6-15 11:10
对 因为  这是List是一个接口不能通过new的方式创建其对象 只能new它的实现类再向上转型为List  
例如  L ...

你把人家问的看清楚,不要误人子弟。。
回复 使用道具 举报
274997322 发表于 2013-6-15 09:33
也就是说list array=new List()这种写法是错的?

对 因为  这是List是一个接口不能通过new的方式创建其对象 只能new它的实现类再向上转型为List  
例如  List list = new ArrayList();
回复 使用道具 举报
a767175432 发表于 2013-6-15 01:50
List这个东西就是一个List集合接口,它不能直接new 只能new它的实现类   ArryList是它的实现类之一 顾名思 ...

也就是说list<int> array=new List<int>()这种写法是错的?











回复 使用道具 举报
ArrayList集合中的任何引用或值类型都将隐式地向上强制转换为 Object。
对于ArrayList存储值类型时就涉及到装箱和拆箱的过程
在大型集合进行循环访问的时候,装箱和拆箱操作会降低性能

而List<>是一种泛型表示方法,添加的唯一语法是声明和实例化中的类型参数
宏观上看让程序变复杂了,但是却比ArrayList速度快(因为添加的类型相同,处理快,不需要进行转换,比如装箱拆箱之类的操作),安全性能高
回复 使用道具 举报
学习学习!
回复 使用道具 举报
List<T>这个东西就是一个List集合接口,它不能直接new 只能new它的实现类   ArryList是它的实现类之一 顾名思义 它是一个带下标的集合类
<T>是泛型标记 是为了在编译时期就能告诉程序员错误的一种安全机制。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马