ArrayList和LinkedList
ArrayList:
ArrayList是线性的数据结构,可以在任何位置对元素进行增删。
注意点
1.ArrayList是非同步的,也就是说,在多线程并发操作ArrayList时候需要对ArrayList进行同步。
2.ArrayList内部是用数组实现的,增删会引起数组内存动态变化。因此插入删除慢,但检索很快
3.ArrayList中可以同时存放不同的对象
常用方法:
boolean add(Object element);
void add(int index,Object element);
Object get(int index);
boolean contains(Object elem);
int indexOf(Object elem);
Object remove(int index);
boolean remove(Object o);
int size();
void clear(); //清空链表
LinkedList:
LinkedList也是线性的数据结构,可以在任何位置对元素进行增删。
注意点
1.LinkedList是非同步的,也就是说,在多线程并发操作LinkedList时候需要对LinkedList进行同步。
2.LinkedList内部是用动态链表实现的,增删快,检索慢。
3.LinkedList实现了Queue接口,可以用做一个先进先出的队列来使用。
常用方法与ArrayList相似,增加了Queue接口的方法如下:
boolean offer(Object elem); //增加元素到队列尾部
Object peek(); //获取队列头部元素,并且不从队列中移出
Object poll(); //获取队列头部元素,并且从队列中移出
Object remove(); //将队列头部元素移出
HashSet:
HashSet 是个集合类型的数据结构,实现了Set接口,满足数学上对集合的定义:无需不重复
注意点:
1 HashSet是非同步的。也就是说,多线程并发操作HashSet的场景下,需要对HashSet同步
2 Hashset内部是用HashMap来实现的,对元素的增加、删除、检索有很高的性能
3 HashSet中元素是无序的,因此对HashSet遍历,不保证遍历顺序都一致。
4 Hashset中没有重复元素,因此将相同的对象加入到HashSet中,则最终HashSet只有一个对象
常用方法:
boolean add(Object o);
boolean remove(Object o);
boolean contains(Object o);
Iterator iterator(); //返回集合迭代器,用于遍历集合
boolean isEmpty();
int size();
void clear();
HashMap
HashMap 又称杂凑表 散列表,它是一个非线性的数据结构。其中每个元素由key和value对构成,key用来做索引,value
是实际要存储的值。
注意:
1 HashMap是非同步的,也就是说,在多线程并发操作HashMap时,需要对HashMap进行同步。
2 HashMap对元素的插入、删除、检索的速度都很快,在高性能的情况下被大量使用,其缺点是内存占用较多。
3 HaspMap中可以存放不同类型的对象,包括Null
常用方法:
Object put(Object key,Object value);
Object get(Object key);
Object remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
Set keySet(); //获取key的集合,配合get方法,可以遍历Map
Set entrySet(); //获取Map.Entry集合,可以通过Map.Entry直接遍历每个key和value
boolean isEmpty();
int size();
void clear();