集合类-Collecion
Collection接口
常用方法
//添加新元素
boolean add (E element);
//返回迭代器
Iterator<E> iterator();
Iterator接口
public interface Iterator<E>{
E next();
boolean hasNext();
//移除Iterator最近的一个获取的元素 所以要调用next获取过元素才能调用remove删除
void remove();
}
集合的添加迭代
Collection c = ......;//随便一种Collection实现
Iterator it = c.iterator();
while(it.hasNext()){
//do something with it.next();
}
//java 5.0+ 可以使用for each
for(Element e: c){
//do something with e;
}
AbstractCollecion-实现了iterator,size等方法
Collection实现集合
实现类 | 解析 |
---|---|
ArrayList | 可以动态增长和缩减的索引序列 |
LinkedList | 可以在任何位置进行高效插入删除操作的序列 |
ArrayDeque | 循环数组实现的双端队列 |
HashSet | 没有重复元素的无序集合 |
TreeSet | 有序集合 |
EnumSet | 包含枚举类型的集合 |
LinkedHashSet | 可以记住元素插入次序的集合 |
PriorityQueue | 允许高效删除最小元素的集合 |
HashMap | 存储键值关联的数据结构 |
TreeMap | 键值有序排列的映射表 |
EnumMap | 键值属于枚举类型的映射表 |
LinkedHashMap | 可以记住键值添加次序的映射表 |
WeakHashMap | 其值没用的之后,可以自动被垃圾回收期回收的映射表 |
IdentityHashMap | 一种使用==(不使用equals)来比较键值的映射表 |
队列-queue
先进先出
队列尾添加元素,队列头删除元素,队列个数查询
实现方式
- 循环数组实现(容量有限)
- 链表实现
链表
链表是一个有序集合
实现ListIterator接口
public interface ListIterator<E> extends Iterator<E>{
E next();
boolean hasNext();
//移除Iterator最近的一个获取的元素 所以要调用next获取过元素才能调用remove删除
void remove();
//新添加的接口
//插入到下一个元素之前
void add();
//移到上一个元素
E previous();
boolean hasPrevious();
E getFirst();
E getLast();
E removeFirst();
E removeLast();
}
demo
/**
* 链表是一个有序集合
*/
LinkedList<String> llist = new LinkedList<String>();
llist.add("s1");
llist.add("s2");
llist.add("s3");
System.out.println(llist);//=>[s1, s2, s3]
/**
* Iterator的使用
*/
Iterator<String> it = llist.iterator();
System.out.println(it.next());//=>s1
it.remove();//=>移除s1
System.out.println(llist);//=>[s2, s3]
/**
* ListIterator的使用
*/
ListIterator<String> lit =llist.listIterator();
System.out.println(lit.next());//=>返回了Ss2
lit.add("1");//插入到下一个元素(s3)之前
System.out.println(llist);//=>[s2, 1, s3]
数组列表-ArrayList
有序集合,可以使用get,set方法设定指定位置元素
散列集-HashSet
为每个对象计算一个散列码(整数)
树集-TreeSet
有序的散列集
要实现Comparable接口来实现排序
双端队列-ArrayDeque,LinkedList
可以同时操作头尾的元素
优先级队列-PriorityQueue
元素任意顺序插入,都会按照排序顺序排列,remove方法总会获得优先级最低的元素
映射表-HashMap,TreeMap
若散列映射表-WeakHashMap
自动回收没用的key值
链接散列集和链接映射表-LinkedHashList LinkedHashMap
可以记住插入的顺序