java中容器的学习与理解

Posted 稻草人_雷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中容器的学习与理解相关的知识,希望对你有一定的参考价值。

  以前一直对于java中容器的概念不理解,虽然学习过,但始终没有认真理解过,这几天老师提出了这样一个问题,你怎么理解java中的容器。瞬间就蒙了。于是各种搜资料学习了一下,下面是我学习后整理出来的的一些心得。欢迎各路大神指教

  在书写程序时,我们常常需要对大量的对象引用进行管理。为了实现有效的归类管理,我们常常将同类的引用放置在同一个数据容器中

java容器的组成

  1、Collection接口:定义了存取一组对象的方法,他的子接口Set和List分别定义了存取方法。Set中的数据对象没有顺序且不可重复List中的数据对象有顺序且可重复。List又被细分为LinkedList和ArrayList,LinkedList以链表的方式来存取数据ArrayList是以数组方式来存储数据

Collection接口定义的方法
返回值 方法名(参数类型 参数) 描述
int  size() 容器中对象的数目
boolean isEmpty() 是否为空
void clear() 清空
boolean contains(Object element) 是不是包含element对象
boolean add(Object element) 添加element的对象
boolean remove(Object element) 移除element对象
Iterator iterator() 返回一个Iterator对象,用于遍历容器中的对象
boolean containsAll(Collection c) 是否包含c容器中的所有对象
boolean addAll(Collection c) 把c容器中的所有对象添加到容器中
boolean removeAll(Collection c) 从容器中移除C容器中存在的所有对象
boolean retainAll(Collection c) 求当前的集合类与C容器的交集
Object[] toArray() 把容器中的所有对象转换到对应的数组中

 

    (1)List:List容器的中的元素没有顺序,可以重复。List容器中的元素都对应一个整型序号记载着其在容器中的位置。

       1.LinkedList:其数据结构采用的是链表,这种结构的优势是删除和添加的效率很高,但随机访问元素时效率较ArrayList类低。

       2.ArrayList:其数据结构采用的是线性表,此种结构的优势是访问和查询十分方便,但添加和删除的时候效率很低。

    (2)Set:Set接口没有提供额外的方法,但实现了Set接口的容器类中的元素是没有顺序,并且不可以重复的。Set容器类似于数学中集合的概念。

       1.HashSet:Set类不允许其中存在重复的元素(集),无法添加一个重复的元素。HashMap利用Hash函数进行了查询效率上的优化,其中contain()方法经常被调用,以用于判断相关元素是否被添加过。

  2、Map接口:Map提供的是一种键值对的方式存储数据(键和值之间是一一对应的)

    (1)HashMap:提供了key-value的键值对的数据存储机制,可以很方便的通过键值查找相应的元素,而且通过Hash散列机制,查找很方便。

  3、Iterator接口:所有实现了Collection接口的容器都有一个iterator方法,用于返回一个实现了Iterator的对象。Iterator对象为迭代器,用于实现对容器中元素的遍历。

 

 

 

容器就好像一个存放对象的仓库,可以将你的东西存放在一个无限制的仓库中,然后要用的时候可以按规律取出来!
概念:
突破数组的固定尺寸们可以在并不知道需要多少对象的情况或者更复杂的方法存储对象,提出了容器这个概念!
List,Set,Queue和Map这些对象类型本称为集合类,由于java的类库中使用了Collection这个名字代表该类库的一个特殊子集!所以使用了范围更广的术语“容器”来称呼他们!
容器比数组的好处在于可以自动调整子集的尺寸。不用担心应该设置为多大!
存放在容器的对象在存放的时候如果没有声明继承自哪个类,那么它的自动继承自Object,所以当你取容器的的对象的时候,你得到的只是Object的应用,必须将其转型为你所要的类型!


以上是关于java中容器的学习与理解的主要内容,如果未能解决你的问题,请参考以下文章

Java容器之Collection与ArrayList一些理解及自己用代码实现ArrayList

java中封装,继承,多态,接口学习总结

Spring学习第0节 -- 核心技术Ioc容器IOC理解

java SpringRetry学习的代码片段

JSP学习与理解

深入理解Java虚拟机- 学习笔记 - Java内存模型与线程