Java常用集合总结
2014-08-04 09:51
309 查看
Java常用集合
1.参考博客
http://blog.csdn.net/zsm653983/article/details/7562324
http://blog.csdn.net/softwave/article/details/4166598
2.常用集合
Java常用集合包括ArrayList,LinkedList,HashMap,HashSet.
其中ArrayList,LinkedList实现List接口。
HashMap实现Map接口。
HashSet实现Set接口。
List,Set继承Collection接口.
3.ArrayList实现
public classArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess,Cloneable, java.io.Serializable
它是List接口可变数组的实现,且其实现不是同步的。
底层使用数组保存所有元素。其操作基本上是对数组的操作。
4.Linkedlist实现
public classLinkedList<E>
extends AbstractSequentialList<E>
implements List<E>,Deque<E>, Cloneable, java.io.Serializable
LinkedLIst是基于双向链表实现的 ,所谓的双向链表就是集合中每个元素对象都知道其前一个对象和后一个对象的位置。在LinkedList中,是以一个内部的Entry对象来代表集合中的元素,其中元素的值会赋值给对象的element属性,next属性指向后一个元素,previous指向前一个元素,基于这样的机制可以实现原速度的移动。
5.HashMap实现
参考博文http://blog.csdn.net/vking_wang/article/details/14166593
其是以数组+链表方式实现的。
可以理解为链表的数组,即它是由一个线性数组,每个数组元素是一个链表的头结点组成的。
每个数组元素的具体内容是它的一个内部类Entry作为基本的存储单元。
staticclass Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
int hash;
6.HashSet实现
参考博文
http://blog.csdn.net/ymeng_bupt/article/details/6825049
publicclass HashSet<E>
extends AbstractSet<E>
implementsSet<E>, Cloneable, java.io.Serializable
它实现Set接口。
它的元素和Set中一样不允许重复。
它的一个构造函数
publicHashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int)(c.size()/.75f) + 1, 16));
addAll(c);
}
从它的构造函数可以看出它的实现依赖于HashMap. HashSet采用哈希算法,底层用数组存储数据。默认初始化容量16,加载因子0.75.
hashset如何做到不重复呢?
1) 在添加元素时调用Object类的hashCode()方法,判断是否存在,若不存在直接插入元素。
2) 若存在,调用Object对象的equals()方法判断是否为true,若为false则插入元素。
3) 函数源代码
publicboolean add(E e) {
return map.put(e, PRESENT)==null;
}
7.集合之间的区别
1)ArrayList&LinkedList
List接口的两种不同实现,ArrayList底层采用数组方式存储元素,LinkedList采用双向循环链表实现。从而可以看出ArrayList适合随机存取元素。而LinkedList适合插入和删除元素,不适合随机存取元素。
ArrayList,Vector:
Vector和ArrayList都是数组实现的。Vector是支持线程同步的,所以它是线程安全的,但消耗系统资源。
2)HashMap&HashTable
参考博文
http://blog.csdn.net/tianfeng701/article/details/7588091
3)HashSet&TreeSet
参考博文
http://blog.csdn.net/l_serein/article/details/6294205
http://blog.csdn.net/foart/article/details/4263456
4) List&Set
List中元素可以重复,而且保证维持元素的特定顺序。
Set中元素不可重复,不保证维护元素特定的次序。加入Set的元素需重定义equals方法以保持对象的唯一性。
8. 集合框架梳理
Collection接口是作为根接口存在的。
List,Set接口继承Collection接口。
Vector,ArrayList,LinkedList类实现List接口。
HashSet,TreeSet类实现Set接口。
HashMap,TreeMap类实现Map接口。
1) Collection接口是一组允许重复的对象。
2) Set接口不允许重复,使用自己内部的一个排列机制。
3) List允许重复,以元素插入的顺序放置。
4) Map接口是一组成对的键,值对象,Map中不能有重复的Key。
1.参考博客
http://blog.csdn.net/zsm653983/article/details/7562324
http://blog.csdn.net/softwave/article/details/4166598
2.常用集合
Java常用集合包括ArrayList,LinkedList,HashMap,HashSet.
其中ArrayList,LinkedList实现List接口。
HashMap实现Map接口。
HashSet实现Set接口。
List,Set继承Collection接口.
3.ArrayList实现
public classArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess,Cloneable, java.io.Serializable
它是List接口可变数组的实现,且其实现不是同步的。
底层使用数组保存所有元素。其操作基本上是对数组的操作。
4.Linkedlist实现
public classLinkedList<E>
extends AbstractSequentialList<E>
implements List<E>,Deque<E>, Cloneable, java.io.Serializable
LinkedLIst是基于双向链表实现的 ,所谓的双向链表就是集合中每个元素对象都知道其前一个对象和后一个对象的位置。在LinkedList中,是以一个内部的Entry对象来代表集合中的元素,其中元素的值会赋值给对象的element属性,next属性指向后一个元素,previous指向前一个元素,基于这样的机制可以实现原速度的移动。
5.HashMap实现
参考博文http://blog.csdn.net/vking_wang/article/details/14166593
其是以数组+链表方式实现的。
可以理解为链表的数组,即它是由一个线性数组,每个数组元素是一个链表的头结点组成的。
每个数组元素的具体内容是它的一个内部类Entry作为基本的存储单元。
staticclass Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
int hash;
6.HashSet实现
参考博文
http://blog.csdn.net/ymeng_bupt/article/details/6825049
publicclass HashSet<E>
extends AbstractSet<E>
implementsSet<E>, Cloneable, java.io.Serializable
它实现Set接口。
它的元素和Set中一样不允许重复。
它的一个构造函数
publicHashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int)(c.size()/.75f) + 1, 16));
addAll(c);
}
从它的构造函数可以看出它的实现依赖于HashMap. HashSet采用哈希算法,底层用数组存储数据。默认初始化容量16,加载因子0.75.
hashset如何做到不重复呢?
1) 在添加元素时调用Object类的hashCode()方法,判断是否存在,若不存在直接插入元素。
2) 若存在,调用Object对象的equals()方法判断是否为true,若为false则插入元素。
3) 函数源代码
publicboolean add(E e) {
return map.put(e, PRESENT)==null;
}
7.集合之间的区别
1)ArrayList&LinkedList
List接口的两种不同实现,ArrayList底层采用数组方式存储元素,LinkedList采用双向循环链表实现。从而可以看出ArrayList适合随机存取元素。而LinkedList适合插入和删除元素,不适合随机存取元素。
ArrayList,Vector:
Vector和ArrayList都是数组实现的。Vector是支持线程同步的,所以它是线程安全的,但消耗系统资源。
2)HashMap&HashTable
参考博文
http://blog.csdn.net/tianfeng701/article/details/7588091
3)HashSet&TreeSet
参考博文
http://blog.csdn.net/l_serein/article/details/6294205
http://blog.csdn.net/foart/article/details/4263456
4) List&Set
List中元素可以重复,而且保证维持元素的特定顺序。
Set中元素不可重复,不保证维护元素特定的次序。加入Set的元素需重定义equals方法以保持对象的唯一性。
8. 集合框架梳理
Collection接口是作为根接口存在的。
List,Set接口继承Collection接口。
Vector,ArrayList,LinkedList类实现List接口。
HashSet,TreeSet类实现Set接口。
HashMap,TreeMap类实现Map接口。
1) Collection接口是一组允许重复的对象。
2) Set接口不允许重复,使用自己内部的一个排列机制。
3) List允许重复,以元素插入的顺序放置。
4) Map接口是一组成对的键,值对象,Map中不能有重复的Key。
相关文章推荐
- Java常用集合总结
- Java高级个人笔记(java常用集合总结)
- 常用java集合总结
- 关于Java中常用的集合类总结
- java 常用集合list与Set、Map区别及适用场景总结
- java常用集合总结
- 【集合详解】Java集合总结(下)-常用集合类对比
- java 常用集合list与Set、Map区别及适用场景总结
- java常用到的知识点总结之集合、泛型
- java 常用集合list与Set、Map区别及适用场景总结
- java当前常用集合框架总结
- java 常用集合list与Set、Map区别及适用场景总结
- java常用集合总结
- 【Java集合的详细研究1】Collections类常用方法总结
- java常用集合总结
- java常用容器(集合)的总结
- java常用集合总结
- java常用集合总结
- JAVA常用集合要点总结
- java常用集合总结