2 qq 33880962 qq_33880962 于 2016.09.18 20:15 提问

java中关于容器的问题

为什么很多程序都写成Collection c = new ArrayList();而非 ArrayList c = new ArrayList(),求高手指点,最好通俗易懂,谢谢。

2个回答

coding_hello
coding_hello   2016.09.18 20:36

Collection是上层抽象,ArrayList是上层抽象的实例。上层抽象定义了接口,实例定义了具体实现。为了能统一处理不同的实例,直接用抽象类型来处理会比较统一。比如一个循环里既有ArrayList容器,也有其他容器,但它们都是Collection。循环起来就很方便。不然的话,对象类型都不一样,没法循环了。

cangyingzhijia
cangyingzhijia   2016.09.18 21:12

面向接口编程而不是具体的实现,这样的话如果有一天把ArrayList换成LinkedList或者其他的东东,对于使用Collection的代码来说毫无所知不需要修改也能跑的好好的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
JAVA面试之容器
java collections框架中大量集合接口以及这些接口的实现类和操作他们的算法,具体而言,主要提供了List、Queue、Set、Stack和Map。 其中Collection接口下有List、Queue、Set、Stack。Map里面HashMap、Hashtable、TreeMap、WeakHashMap。 下面来看看list、set、map的实现类原理。 1> list
C++面试题之容器
http://wenku.baidu.com/link?url=s7x-6FA6jgcTX1HeyZg2Be5k6My5q-QtTn2aZemX3k15xuz_ncthSbCBWLjWFpDZV_NDG_vnBQDErtCxv4ZqCuvE51YqvXfbQS3c3CJqtl3
Java collection 集合 容器 效率问题
下面是关于 集合效率的问题 一万条一下的数据 差距忽略不计。随便用谁都行。 List : 可重复 Set : 不可重复 Map: key不可重复 value 可重复Hash: 遍历慢 随机查询快 无序 Linked: 遍历快 随机查询慢 自然顺序(1,2,3…) Tree: 遍历快 随机查询慢 输入顺序==输出顺序下面是数据的测试,等号后面代表执行花费时间 毫秒为单位:
Java容器类浅析一-----容器类的类型
1.容器类类图: 由类图我们可以看出,Java的容器类一个有两大类型,一是存储单值的Collection,另一个是存储键值对的Map。 其中Collection的实现类有四种:Set、List、Vector、Stack。我们常用的是Set和List,顾名思义,Set是集合,没有重复的元素,而List是数组,可以存储相同的元素。Vector是线程安全的,List的实现类A
Java容器填充-1
使用Collections.nCopies()和Collections.fill()实现对容器的简单填充。 具体代码如下: import java.util.ArrayList; import java.util.Collections; import java.util.List; public class FillingLists { public static void main
java容器的默认初始容量、加载因子、扩容增量问题
原文转自http://www.cnblogs.com/xiezie/p/5511840.html   这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。 加载因子的系数小于等于1,意指
JAVA面向对象问题的汇总
(一)父类引用指向子类对象    问:Father obj=new Son();  //obj可以访问Son中的方法吗? 答:对于这个问题你要明白两点:1、何为覆盖2、何为对象引用,何为对象实体(重点) Father obj=new Son(); Father obj  是对象引用 new Son(); 是对象实体 所以调用的方法可以说都是子类的方法,因为此代码中实体对象是子类
JAVA泛型详解(三)---一个创建常用容器对象的泛型工具类
直接上代码吧:     import java.util.*; public class ContainerTool{ public static Map map(){ return new HashMap (); } public static List list(){ return new ArrayList (); } public static LinkedLis
容器的作用
什么是轻量级容器?为什么我们需要轻量级容器? 什么是轻量级容器        所谓容器(container),指应用代码的运行框架。业务对象在容器里运行,被容器管理。像EJB就是过去管理J2EE业务对象时最常用的容器。        任何容器都应该包含如下服务: 生命周期管理:最起码,容器应该负责创造构件。查找服务:容器必须有一种途径来获得受控构件的引用,以
关于Java的线程问题总结
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。 在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程