美文网首页
java---Map接口实现类

java---Map接口实现类

作者: carymao | 来源:发表于2018-06-01 17:05 被阅读88次

Map是一个双列集合接口,如果实现了Map接口,特点是数据以键值对形式存在,键不可重复,值可以重复。java中主要有HashMap、TreeMap、Hashtable。本文主要介绍Map的接口方法:

1 HashMap、TreeMap、Hashtable

HashMap的存储原理:

HashMap 底层也是基于哈希表实现的。往HashMap添加元素的时候,首先会调用键的hashCode方法得到元素 的哈希码值,然后经过运算就可以算出该元素在哈希表中的存储位置。

情况1: 如果算出的位置目前没有任何元素存储,那么该元素可以直接添加到哈希表中。

情况2:如果算出 的位置目前已经存在其他的元素,那么还会调用该元素的equals方法与这个位置上的元素进行比较,如果equals方法返回 的是false,那么该元素允许被存储,如果equals方法返回的是true,那么该元素被视为重复元素,不允存储。

TreeMap存储原理:

TreeMap也是基于红黑树(二叉树)数据结构实现 的, 特点:会对元素的键进行排序存储。

TreeMap 要注意的事项:
  1. 往TreeMap添加元素的时候,如果元素的键具备自然顺序,那么就会按照键的自然顺序特性进行排序存储。
  2. 往TreeMap添加元素的时候,如果元素的键不具备自然顺序特性, 那么键所属的类必须要实现Comparable接口,把键的比较规则定义在CompareTo方法上。
  3. 往TreeMap添加元素的时候,如果元素的键不具备自然顺序特性,而且键所属的类也没有实现Comparable接口,那么就必须在创建TreeMap对象的时候传入比较器。

Hashtable存储原理:

底层也是hash表实现,实现方式和HashMap一致,但是hashTable是线程安全的,操作效率低。

  http://www.cnblogs.com/K-artorias/p/7090314.html 链接进去,文章讲了hashMap和hashTable的区别。

2 Map接口的方法:
添加:
  put(K key, V value)
  putAll(Map<? extends K,? extends V> m)
删除
  remove(Object key)
  clear()

获取:
  get(Object key)
  size()
判断:
  containsKey(Object key)
  containsValue(Object value)
  isEmpty()

以下是上述接口方法的代码举例:

public class Demo2 {
    
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<String, String>();
        //添加方法
        map.put("A", "a");
        map.put("B", "b");
        map.put("C","c");
        
        /*
        添加
        System.out.println("返回值:"+map.put("A","@"));  // 如果之前没有存在该键,那么返回的是null,如果之前就已经存在该键了,那么就返回该键之前对应 的值。
        Map<String,String> map2 = new HashMap<String, String>();
        map2.put("M", "m");
        map2.put("N", "n");
        map.putAll(map2); // 把map2的元素添加到map集合中。
        
        */
        
        /*
        删除
        System.out.println("删除的数据是:"+map.remove("A")) ;  //根据键删除一条map中的数据,返回的是该键对应 的值。
        map.clear(); //清空集合中的所有数据。
        */
        
        /* 获取
        System.out.println("根据指定 的键获取对应的值:"+ map.get("B"));
        System.out.println("获取map集合键值对个数:"+map.size());
        
        
        判断
        System.out.println("判断map集合是否包含指定的键:"+ map.containsKey("B"));
        System.out.println("判断map集合中是否包含指定 的值:"+ map.containsValue("c"));
        map.clear();
        System.out.println("判断map集合是否为空元素:"+ map.isEmpty());
        */
        System.out.println("集合的元素:"+ map);
        
        
    }

}

相关文章

  • java---Map接口实现类

    Map是一个双列集合接口,如果实现了Map接口,特点是数据以键值对形式存在,键不可重复,值可以重复。java中主要...

  • JDK静态代理示例代码

    JDK静态代理示例代码 业务接口 接口的实现类 代理类,实现接口,并扩展实现类的功能 1、业务接口 2、业务实现类...

  • Java中3种代理总结

    1、JDK静态代理 业务接口 接口的实现类 代理类,实现接口,并扩展实现类的功能 2、JDK动态代理 业务接口 实...

  • 工厂方法模式

    抽象工厂类或接口 抽象工厂类或接口实现类 抽象产品类或接口 抽象产品类或接口实现类 使用

  • 抽象工厂模式

    抽象工厂类或接口 抽象工厂类或接口实现类 抽象产品类或接口 抽象产品类或接口实现类 使用

  • 抽象类 接口其他用法

    接口A 有两个方法 a() ; b(); 抽象类 B 实现接口A 并实现a()方法 类C继承类B 并实现接口A 则...

  • Java 注解

    @Override @Override 用来重写父类方法 / 或实现接口方法。 实现接口 重写父类接口

  • 接口

    一个类实现多个接口,用,分开. 父类 对象名 = new 子类(); 接口 名字 = new接口的实现类 接口与抽...

  • 建造者模式

    建造者抽象类或接口 建造者抽象类或接口实现类 产品抽象类或接口 产品抽象类或接口实现类 使用

  • 接口

    接口 必须知道的接口特性 接口不可以被实例化 实现类必须实现接口的所有方法 实现类可以实现多个接口 接口中的变量都...

网友评论

      本文标题:java---Map接口实现类

      本文链接:https://www.haomeiwen.com/subject/ouyksftx.html