Java笔记--集合 List、Set、Map

一、 概述
# 主要集合 List、Set、Map [java.util包]
    - List Set 实现Collection接口
    - 又称容器

# 容器与数组
    - 长度:数组长度固定、集合长度可变
    - 存放内容:数组存放基本类型数据、集合存放类对象引用

# List接口、 Set接口、Map接口、Collection接口特征
    - Collection接口是List、Set接口父接口,通常情况下 不能直接使用
    - List接口 允许存放重复对象,按对象的插入顺序排队
    - Set接口 不允许存放重复对象, 按自身内部排序规则排序
    - Map接口 以键值对形式存放对象[key-vaule]
             键对象不可以重复、值对象可以重复,按自身内部排序规则排序 


二、 Collection接口
# 常用方法 -- 概述

  ·添加
    - add(E obj) 添加对象
    - addAll(Collection<? extends E> col) 添加集合col中的所有对象  
  ·移除
    - remove(Object obj) 从集合中移除对象 
    					 返回值boolean,存在指定对象返回true,否则返回false
    - removeAll(Collection<?> col) 移除集合col中的所有对象 存在指定对象返回true。。。
    - retainAll(Collection<?> col) 仅保留集合col中的所有对象 存在符合移除条件对象返回true
    - clear() 移除集合所有对象
  ·查看
    - contains(Object obj) 查看是否存在指定对象,存在返回true,否则返回false
    - containsAll(Collection<?> col) 查看 集合col中的所有对象 是否都存在,存在返回true。。。
    - isEmpty() 查看集合是否为空 空返回true 否则返回false
    - size() 查看大小 返回集合中对象个数 返回int型
  ·转化
    - iterator() 序列化集合对象 返回Iterator<E>型 通过返回实例可以遍历集合对象
    - toArray() 转数组 获得一个包含所有对象的Object型数组
    - toArray(T[] t) 转数组 获得一个包含所有对象的指定类型数组
  ·对比
    - equals(Object obj) 查看两对象是否为同一个对象,是返回true,否则返回false

# addAll()方法 ---- addAll(Collection<? extends E> col)  
  · 异常抛出 :两集合对象类型一致,否则编译错误 
                如果对集合col进行了泛化,那么被添加集合中的所有对象都必须符合泛化类型,
                否则在编译时排除异常 [E 表示用来泛化的类型]


三、 List集合 
# 概述
  - List集合为列表类型, 以线性方式存储对象
  - 内容 : List接口 以及 List接口的所有实现类
# List接口~常用方法

  ·添加
    - add(int index, Object obj) 向指定索引位置添加对象,其他对象索引位置相对后移一位
    - addAll(int, Collection coll) 向指定位置添加集合中所有对象
  ·删除
    - remove(int index) 删除指定位置对象
  ·修改
    - set(int index, Object obj) 修改指定位置对象
  ·查看
    - get(int index) 获得指定位置对象
    - indexOf(Object obj) 获得指定对象索引位置。存在多个时,返回第一个索引位置。不存在返回-1
    - lastIndexOf(Object obj) 获得指定对象索引位置。存在多个时,返回最后一个索引位置。不存在返回-1
  ·转化
    - listIterator() 获得一个包含所有对象的listIterator型实例
    - listIterator(int index) 获得一个包含从位置index开始以后的所有对象的listIterator型实例
    - subList(int fromIndex, int toIndex)截取List集合返回[fromIndex位置包含 toIndex位置不包含]

# ArrayList类
  · 概述
    - 实现List接口 数组结构保存对象
    - 优点: 便于对集合进行快速的随机访问 [根据索引位置访问集合对象]
    - 缺点: 向指定位置插入删除 速度较慢

# LinkedList类
  · 概述
    - 实现List接口 链表结构保存对象
    - 优点: 便于对象的、插入删除
    - 缺点: 随机访问 速度较慢
  · 专有操作方法

    - addFirst(E obj) 指定对象插入列表开头
    - addLast(E obj) 指定对象插入列表结尾
    - getFirst() 获得列表开头对象
    - getLast() 获得列表结尾对象
    - removeFirst() 移除列表开头对象
    - removeLast() 移除列表结尾对象

四、 Set集合
# 概述
  - Set集合为集类型,无序
  - 不存放重复对象

# HashSet类
  · 概述
    - 优点:快速定位集合元素
    - 对象唯一性:添加到由HashSet类实现的Set集合对象,需要重新实现equals()方法,保证唯一性
    - 排序:按照哈希码排序,根据对象哈希码确定对象的存储位置 [重新实现hashCode()]  

# TreeSet类
  · 概述  
    - 实现了java.util.SortedSet接口 保证遍历集合时按照递增顺序获得对象
      自然顺序递增排列:存入对象 实现Comparable接口
      指定比较器递增排序:通过比较器对由TreeSet类实现的Set集合中的对象进行排序
  · TreeSet类实现的 java.util.SortedSet接口方法

    - comparator() 获得集合采用的比较器。 返回Comparator类型,无返回null
    - first() 返回集合中排序第一的对象
    - last() 返回集合中排序最后的对象
    - headSet(E toElement) 返回 在对象toElement(不包含) 之前的所有对象的Set集合
    - subSet(E fromElement, E toElement) 返回对象fromElement(包含)和对象toElement(不包含)之间的Set集合
    - tailSet(E fromElement) 返回 在对象fromElement(包含) 之后的所有对象的Set集合

五、 Map集合
# 概述
  - Map集合为映射类型 (key-value)
    映射中每个对象都是成对出现 每个对象都有一个相应的键对象(key)
    检索对象时 必须通过相应的键对象来获取值对象(value) [键对象必须唯一]
  - 键对象决定对象在映射中的存储位置[散列码]
  - 通过散列技术处理产生散列码,散列码作为一个偏置量
    偏置量相对于分配给映射的内存区域的起始位置,由此确定内存位置
  - 理想状态下,散列码应该是在给定范围内均匀分布的整数值,每个键对象得到不同的散列码
  - Map接口实现类:HashMap TreeMap
  - Map集合允许值对象为null,且没有个数限制
# Map~常用方法

  ·添加
    - put(K key, V value) 向集合中添加指定键-值映射关系
    - putAll(Map<? extends K, ? extends V> t) 以映射集合形式,添加多个映射关系
  ·查看
    - containsKey(Object key) 查看是否存在指定键的映射关系,存在返回true,否则false
    - containsValue(Object value) 查看是否存在指定值的映射关系,存在返回true,否则false
    - get(Object key) 通过键对象返回对应的值对象[值对象可以为null], 没有返回null
    - isEmpty() 查看集合是否存在键值对 不存在返回true 存在返回false[此时已分配内存空间]
    - size() 查看集合映射关系个数,返回int型
    - equals(Object obj) 查看指定对象与该对象是否为同一对象 是返回true 否则返回false
  ·删除
    -clear() 移除集合中所有映射关系

# HashMap类
  · 概述
    - 通过哈希码对其内部映射关系进行快速查找 
      对于添加和删除映射关系更有效
    - 允许null作为键对象,但只能有一个,键对象唯一
    - 重写hashCode()方法 【不唯一原则,分散原则】
 
# TreeMap类
  · 概述
    - 映射关系存在一定顺序 [有序]
    - 不允许键对象为null
    - 实现子接口java.util.SortedMap
  · SortedMap接口实现方法

    - comparator() 获得集合采用的比较器,返回Comparator型,无返回null
    - firstKey() 返回集合中排序第一位的键对象
    - lastKey() 返回集合中排序最后一位的键对象
    - headMap(K toKey) 截取集合 第一位到toKey(不包含) 返回SortedMap集合
    - subMap(K fromKey, K toKey) 截取集合 fromKey(包含)到toKey(不包含) 返回SortedMap集合
    - tailMap(K fromKey) 截取集合 fromKey(包含)到最后一位 返回SortedMap集合


 

猜你喜欢

转载自blog.csdn.net/weixin_42358484/article/details/88078503