java中容器的学习与理解

  之前一直对于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() 把容器中的全部对象转换到对应的数组中

 

    一、List:List容器的中的元素没有顺序,能够重复。List容器中的元素都对应一个整型序号记载着其在容器中的位置。List主要分为ArrayList和LinkedList,Vector是一个已经被弃用的类,由于他是线程同步的,而咱们平时使用的时候都是非同步的,使用同步的坏处就是会在记录上加锁,防止多个程序访问同一条数据致使数据不一样步。这样会致使访问速度变慢。Stack是知足“后进先出”规则的容器。数据结构

List经常使用方法
返回值 方法名(参数类型 参数) 描述
void sort(List) 对List中的元素进行排序
void shuffle(List) 对List中的元素进行随机排序
void reverse(List) 对List中的元素进行逆袭排序
void fill(List, Object) 用一个特定的对象重写List容器
void copy(List dest, List src) 将src容器中的元素拷贝到dest容器中
int binarySearch(List, Object) 对顺序的List容器,采用折半查找法寻找特定的对象

       (1).LinkedList:其数据结构采用的是链表,这种结构的优点是删除和添加的效率很高,但随机访问元素时效率较ArrayList类低。能够实现全部的栈功能。函数

       (2).ArrayList:是一个能够动态增加的数组,其数据结构采用的是线性表,此种结构的优点是访问和查询十分方便,但添加和删除的时候效率很低。(底层是数组)学习

    二、Set:Set接口没有提供额外的方法,但实现了Set接口的容器类中的元素是没有顺序,而且不能够重复的。Set容器相似于数学中集合的概念。优化

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

       (2).TreeSet:底层使用的是红黑树。线程

    三、Queue(队列):是一个知足“先进先出”的数据结构。对象

LinkedList提供了方法支持队列操做,并实现了Queue接口,因此LinkedList是队列的一种实现。blog

  二Map接口:Map提供的是一种键值对的方式存储数据(键和值之间是一一对应的),Map的键值均可觉得null。Map能够多维扩展,例如一我的拥有多个宠物,能够这样定义:Map<Person,List<pet>>

Map经常使用方法
返回值 方法名(参数类型 参数) 描述
Object put(Object key, Object value) 添加元素
Object get(Object key) 取出键值key对应的value值
Objest remove(Object key) 移除键值key对应的value值
boolean containsKey(Object key) 判断Map容器中是否存在键值key
boolean containsValue(Object value) 判断Map中是否存在value值
int  size() 返回Map容器的长度
boolean isEmpty() 判断Map容器是否为空
void clear() 清空Map容器

 

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

  Iterator接口:是一对象能够遍历并选择序列中的对象全部实现了Collection接口的容器都有一个iterator方法,用于返回一个实现了Iterator的对象。Iterator对象为迭代器,用于实现对容器中元素的遍历。

感谢为我提供学习资料、博客的大神们!!

相关文章
相关标签/搜索