集合


Java基础

集合 : 存储多个对象

Collection:元素是Object

    常用方法:
    add(Object) 把元素添加到集合中
    addAll(Collection c):把c集合中的所有元素添加到集合中
    clear():清空集合
    contains(Object o):判断o元素在集合中是否存在
    remove(Object o):从集合中删除元素o
    size():返回集合的长度
    toArray():将集合转化为数组

    遍历
    1.迭代器遍历  Collection   可以通过迭代器,删除集合中的元素
    2.for-each    Collection   JDK5
    3.forEach() 方法 需要实现java.util.function.Consumer接口  JDK8

List: 元素按顺序存储(下标) 元素可以重复

    常用方法:
    add(int pos, Object o):将元素插入到指定位置
    remove(int pos):删除指定位置的元素
    get(int pos):获得指定位置的元素
    indexOf(Object o):获得o元素的首下标
    lastIndexOf(Object o):获得o元素的尾下标
    set(int pos,Object o):将元素o设置到pos位置,覆盖原有的元素
    subList(int start,int end):获得某段位置的子集合

    遍历:
    1.下标遍历    List
    2.迭代器遍历  Collection   可以通过迭代器,删除集合中的元素
    3.for-each    Collection   JDK5
    4.forEach() 方法 需要实现java.util.function.Consumer接口

    实现类:
    1.ArrayList  数组实现  查询快 增删慢  线程不安全  并发效率高  JDK1.2
    2.Vector     数组实现                 线程安全    并发效率低  JDK1.0
    3.LinkedList 链表实现  查询慢 增删快

    排序: 
    Collections.sort(List) : 要求集合中的元素实现Comparable接口
    Collections.sort(List,Comparator):Comparator比较器, 实现排序逻辑 集合中的元素不需要实现Comparable接口
    list.sort(Comparator):直接对list调用sort方法排序,只能传入Comparator  JDK8

Set:元素无顺序 元素内容不可重复

    常用方法:等同于Collection接口
    遍历:
    1.迭代器遍历  Collection   可以通过迭代器,删除集合中的元素
    2.for-each    Collection   JDK5
    3.forEach() 方法 需要实现java.util.function.Consumer接口  JDK8

    实现类:
    1. HashSet : 保证内容重复对象只有一个
	1)覆盖hashCode()方法,保证相同对象返回相同的int , 尽可能保证不同对象返回不同的int
    	2)覆盖equals()方法,保证相同对象返回true
    2. LinkedHashSet  HashSet的子类, 维护元素添加到Set中的顺序
    3. TreeSet SortedSet(Set的子接口)的实现类   自动实现对元素的排序 依照排序规则判断重复对象

Queue:队列 FIFO

    常用方法:
    add()  : 添加元素
    offer(): 添加元素  优先使用
    remove():删除元素
    poll():删除元素 优先使用
    element():获取队列的头元素  
    peek():获取队列的头元素  优先使用
    实现类:
    LinkedList  ConcurrentLinkedQueue

Map : 元素是 key-value key无顺序,不可重复 value 可重复

    常用方法:
    get(Object key) :通过key查找对应的value
    put(Object key,Object value):将key-value添加到Map中 如果key已存在,新的value覆盖旧的value
    remove(Object key):删除key所对应的key-value对
    size():长度
    containsKey(Object key): 判断key是否存在
    containsValue(Object value): 判断value是否存在
    
    遍历:
    1.keySet():Set          遍历Map中所有的key
    2.values():Collection   遍历Map中所有的value
    3.entrySet():Set Set中的元素为Map.Entry对象. 代表了一个键值对  遍历Map中的所有的键值对
    4.forEach(): 实现BiConsumer接口  直接遍历Map   JDk8

    实现类:
    HashMap : 依靠哈希算法保证key不重复   1.2 线程不安全 并发效率高   允许用null作为key或value
    Hashtable:                            1.0 线程安全   并发效率低  不允许用null作为key或value
    LinkedHashMap : HashMap的子类 维护元素添加到集合中的顺序
    TreeMap SortedMap(Map的子接口)的实现类 自动对key排序
    Properties Hashtable的子类 key和value都是String  通常用于配置文件的处理