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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© x378320002 中级黑马   /  2013-6-17 17:23  /  1838 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在使用集合时,为什么一般都是用顶层类限定类型呢,比如List<Person> list=new ArrayList<Person>();
为什么一般不用
List<Person> list=new ArrayList<Person>();呢?
这是随意的,还是有什么讲究啊?

8 个回复

倒序浏览
是为什么不用ArrayList<Person> list=new ArrayList<Person>();
回复 使用道具 举报
用 List<Person> list=new ArrayList<Person>(); 还是用 ArrayList<Person> list=new ArrayList<Person>(); 看需求。看你是否需要使用 ArrayList 特有方法。如果不需要特有方法,用 List 是不是更好一点啊,因为这个类是父类特点少,看代码的人看起来也好理解啊,在继承关系上,越往底层走,类拥有的自身的特点越多。而且类的继承关系不应该设计的太复杂。具体几层可以参考 Collection 框架。Collection 框架的设计就很经典。除了好理解外,也可以实现多态啊。后面如果需求有修改,这个地方是比较容易改动的。

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报
简单的说,集合类有list列,set集和map映射 三大类!

Set(集):集合中的对象无排列顺序,并且没有重复的对象.

List(队列):集合中的对象按照索引的顺序排列,可以有重复的对象。

Map(映射):集合中的每一个元素都是一对一对的,包括一个key对象,一个Value对象(一个Key指向一个Value).集合中没有重复的key对象,但是vaulue对象可以重复.

这三个接口下有几个方法

你要用的时候需要import java.util.*; 就行

Set set = new HashSet(); //定义集

调用就是 set.add();什么的各种方法。

Arraylist alist= new Arraylist();//定义列 这个比较常用的 像数组,但不像数组那么局限

HashMap map=new HashMap();//定义映射

参考:http://www.sunxin.org/forum/thread/19837.html?page=1


评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报
用张老师的话就是 这样写可以体现我们很牛  你懂  呵呵  
其实这样写 List<Person> list=new ArrayList<Person>();的话程序更易扩展
试想如果你把程序写成这样ArrayList<Person> list=new ArrayList<Person>();也许在未来的某天你想用LinkedList
的话,那整个程序也许都要修改了。总之一句话 程序必须易扩展性

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报
姚志远 发表于 2013-6-17 20:02
用张老师的话就是 这样写可以体现我们很牛  你懂  呵呵  
其实这样写 List list=new ArrayList();的话程 ...

能具体解释一下这里是怎么实现的容易扩展的么。我就是看不出来这里比直接用ArrayList有什么地方能更容易扩展了
回复 使用道具 举报
x378320002 发表于 2013-6-17 21:52
能具体解释一下这里是怎么实现的容易扩展的么。我就是看不出来这里比直接用ArrayList有什么地方能更容易 ...

个人观点:如果程序需要时把 List list=new ArrayList();改为 List list=new LinkedList();时
我们只需要该具体的实现就行了这样不是很易扩展吗?如果是这样的话 ArrayList list=new ArrayList();
那不是两部分都要改了 ,你知道的有时可是牵一发而动全身啊。
回复 使用道具 举报
如果你的需求只针对一种类型的集合,则直接调用你的目的集合,如需Arraylist,就直接调用ArrayList集合的引用,如需linkList就
调用linkList集合的引用。
ArrayList是List的子集,如果你的需求要使用多个集合,则调用父类引用List,这样可以利用多态的好处,便于修改,提高扩展性

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 不用谢我哈哈

查看全部评分

回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马