zoukankan      html  css  js  c++  java
  • 【JAVA SE基础篇】43.Map接口和Set接口的常用方法

    1.Map接口

    成对存储某些信息时,例如:微信手机号对应一个微信号。

    Map就是用来存储“键(key)-值(value)对”.Map类中存储的“键值对”通过键来标识,所以“键对象”不能重复

    Map接口的实现类有HashMap、TreeMap、HashTable、Properties等。

    Map接口的常用方法:

    1.Object put(Object key,Object value):存放键值对。

    2.Object get(Object key):通过键对象查找得到值对象

    3.Object remove(Object key):删除键对象对应得键值对

    4.boolean containsKey(Object key):Map容器中是否包含键对象对应的键值对

    5.boolean conrainsValue(Object value):Mao容器中是否包含值对象对应得键值对

    6.int size():包含键值对得数量

    7.boolean isEmpty():Map是否为空

    8.void putAll(Map t):将t的所有键值对存放到本Map对象

    9.void clear():清空本Map对象所有的键值对

    例:

     例:

     2.HashMap底层实现

    HashMap底层实现采用了哈希表。 哈希表的基本结构:数组+链表。

    1.数组:占用空间连续,寻址容易,增删效率低

    2.链表:占用空间不连续,寻址困难,增删效率高

    哈希表结合了数组和链表的优点:查询块,增删效率高 

    在jdk8中,hashmap在存储一个元素时,当对应链表大于8时,链表转换为红黑树。

     3.TreeMap使用和底层实现

    TreeMap底层是红黑二叉树,在遇到key或者value需要排序的时候就用TreeMap(使用不多)

    例:

    泛型为自定义类的时候可以用comparable接口来排序

    4.HashTable底层实现

    HashTable和HashMap用法几乎一致,底层实现也类似,HashTable加入了synchronized关键字确保线程同步检查

    HashMap:线程不安全,效率高,允许泛型为空

    HashTable:线程安全,效率低,不允许泛型为空

    5.Set接口

    Set接口继承于Collection,Set接口无新增方法,方法和Collection一致,所有List方法都可用于Set接口。

    Set容器特点:无序,不可以重复,无序代表Set中的元素无索引,我们只能通过遍历查找。

    新元素加入时和Set中任意一个元素通过equals()比较时为true,则不能加入,Set中只能由一个null元素

    Set接口的实现类有:HashSet和TreeSet等,常用HashSet。

    例:

    6.HashSet底层实现

    HashSet底层采用哈希算法实现,相当于HashMap的简化版,因此查询和增删效率都比较高

    HashSet中每个元素都是HashMap+key,因为key不能重复,所以HashSet不能重复。

    7.TreeSet底层实现

    TreeSet底层实际用TreeMap实现,相当于简化的TreeMap,通过key来存储Set的元素。

    TreeSet内部需要对存储单元进行排序,同样使用Comparable接口比较

  • 相关阅读:
    Hibernate执行访问步骤及增删改查
    Tuscany SCA 发布Web Service
    AJAX概述
    WSDL概述与结构
    Android常用的简单代码
    volatile/synchronized
    SOAP概述和结构
    [原]spring学习笔记6.补遗2
    [原]spring学习笔记9.1Spring对Aop的支持AOP基础篇
    [转]转个经典的帖子:说故事学设计模式之Java静态代理模式
  • 原文地址:https://www.cnblogs.com/chengkuan/p/13205279.html
Copyright © 2011-2022 走看看