• Java基础第二十四天总结——集合


    目录:

    一、Map接口

    二、Collection工具类

    /*---------------分割线---------------------*/

    一、Map接口

     Map中的key用Set来存放,不可重复。作为一个Map对象所对应的类,需重写hashCode和equals方法。

    HashMap是Map接口使用频率最高的实现类。

     添加、删除、修改操作:
     Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中
     void putAll(Map m):将m中的所有key-value对存放到当前map中
     Object remove(Object key):移除指定key的key-value对,并返回value
     void clear():清空当前map中的所有数据
     元素查询的操作:
     Object get(Object key):获取指定key对应的value
     boolean containsKey(Object key):是否包含指定的key
     boolean containsValue(Object value):是否包含指定的value
     int size():返回map中key-value对的个数
     boolean isEmpty():判断当前map是否为空
     boolean equals(Object obj):判断当前map和参数对象obj是否相等
     元视图操作的方法:
     Set keySet():返回所有key构成的Set集合
     Collection values():返回所有value构成的Collection集合
     Set entrySet():返回所有key-value对构成的Set集合

    Map实现类之一:HashMap

    允许使用null键和null值

    所有的value构成的集合是Collection:无序的,可重复的,所以vlaue所在的类要重写equals方法

    一个key-value构成一个entry

    HashMap判断两个key相等的标准是:两个key通过equals方法返回true,hashCode值也相等。

    HashMap判断两个value相等的标准是:两个value通过,equals方法返回true。

    HashMap源码中的重要常量

    DEFAULT_INITIAL_CAPACITY : HashMap的默认容量,16
    MAXIMUM_CAPACITY : HashMap的最大支持容量,2^30
    DEFAULT_LOAD_FACTOR:HashMap的默认加载因子
    TREEIFY_THRESHOLD:Bucket中链表长度大于该默认值,转化为红黑树
    UNTREEIFY_THRESHOLD:Bucket中红黑树存储的Node小于该默认值,转化为链表
    MIN_TREEIFY_CAPACITY:桶中的Node被树化时最小的hash表容量。(当桶中Node的
    数量大到需要变红黑树时,若hash表容量小于MIN_TREEIFY_CAPACITY时,此时应执行
    resize扩容操作这个MIN_TREEIFY_CAPACITY的值至少是TREEIFY_THRESHOLD的4
    倍。)
    table:存储元素的数组,总是2的n次幂
    entrySet:存储具体元素的集
    size:HashMap中存储的键值对的数量
    modCount:HashMap扩容和结构改变的次数。
    threshold:扩容的临界值,=容量*填充因子
    loadFactor:填充因子

    HashMap内部存储结构是数组和链表的结合

    Map实现类之二:LinkedHashMap

    在HashMap存储结构的基础上,使用了一对双向链表来记录添加元素的顺序。

    与LinkedHashSet类似,LinkedHashMap可以维护Map的迭代顺序:迭代顺序与Key-Value对的插入顺序一致

    Map实现类之三:TreeMap

    TreeMap存储 Key-Value 对时,需要根据 key-value 对进行排序。
    TreeMap 可以保证所有的 Key-Value 对处于有序状态。
    TreeSet底层使用红黑树结构存储数据
    TreeMap 的 Key 的排序:
    自然排序:TreeMap 的所有的 Key 必须实现 Comparable 接口,而且所有
    的 Key 应该是同一个类的对象,否则将会抛出 ClasssCastException
    定制排序:创建 TreeMap 时,传入一个 Comparator 对象,该对象负责对
    TreeMap 中的所有 key 进行排序。此时不需要 Map 的 Key 实现
    Comparable 接口
    TreeMap判断两个key相等的标准:两个key通过compareTo()方法或
    者compare()方法返回0

    Map实现类之四:Hashtable

     Hashtable是个古老的 Map 实现类,JDK1.0就提供了。不同于HashMap,

    Hashtable是线程安全的。
     Hashtable实现原理和HashMap相同,功能相同。底层都使用哈希表结构,查询
    速度快,很多情况下可以互用。
     与HashMap不同,Hashtable 不允许使用 null 作为 key 和 value
     与HashMap一样,Hashtable 也不能保证其中 Key-Value 对的顺序
     Hashtable判断两个key相等、两个value相等的标准,与HashMap一致。

    Map实现类之五:Properties

    Properties 类是 Hashtable 的子类,该对象用于处理属性文件
    由于属性文件里的 key、value 都是字符串类型,所以 Properties 里的 key
    和 value 都是字符串类型
    存取数据时,建议使用setProperty(String key,String value)方法和
    getProperty(String key)方法

    二、Collections工具类

    Collections 是一个操作 Set、List 和 Map 等集合的工具类
    排序操作:(均为static方法)---(只对List有,Map不可调用)
    reverse(List):反转 List 中元素的顺序
    shuffle(List):对 List 集合元素进行随机排序
    sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序
    sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
    swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换

    Collections常用方法

    查找、替换
    Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
    Object max(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最大元素
    Object min(Collection)
    Object min(Collection,Comparator)
    int frequency(Collection,Object):返回指定集合中指定元素的出现次数
    void copy(List dest,List src):将src中的内容复制到dest中
    boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换List 对象的所有旧值

    Collection常用方法:同步控制

    Collections 类中提供了多个 synchronizedXxx() 方法,该方法可使将指定集
    合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全
    问题。

    补充:

    Enumeration 接口是 Iterator 迭代器的 “古老版本”
  • 相关阅读:
    (15)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第三部分(完)
    (14)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第二部分
    (13)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第一部分
    (12)瓦片地图
    (11)粒子系统
    (10)场景转换(Transitions)
    (9)SpriteFrameCache和TextureCache
    LeetCode:数组中的第K个最大元素【215】
    LeetCode:累加数【306】
    LeetCode:组合总数III【216】
  • 原文地址:https://www.cnblogs.com/zhoutie170821/p/12048359.html
Copyright © 2020-2023  润新知