之前一直对于java中容器的概念不理解,虽然学习过,但始终没有认真理解过,这几天老师提出了这样一个问题,你怎么理解java中的容器。瞬间就蒙了。因而各类搜资料学习了一下,下面是我学习后整理出来的的一些心得。欢迎各路大神指教java
在书写程序时,咱们经常须要对大量的对象引用进行管理。为了实现有效的归类管理,咱们经常将同类的引用放置在同一个数据容器中。数组
返回值 | 方法名(参数类型 参数) | 描述 |
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是知足“后进先出”规则的容器。数据结构
返回值 | 方法名(参数类型 参数) | 描述 |
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>>
返回值 | 方法名(参数类型 参数) | 描述 |
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对象为迭代器,用于实现对容器中元素的遍历。
感谢为我提供学习资料、博客的大神们!!