java基础(8) -集合类-Collecion

时间:2023-02-15 07:35:07

集合类-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

可以记住插入的顺序

枚举集和映射集-EnumSet

标识散列映射表-IdentityHashMap