java---Map接口实现类

  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()

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

 1 public class Demo2 {
 2
 3     public static void main(String[] args) {
 4         Map<String,String> map = new HashMap<String, String>();
 5         //添加方法
 6         map.put("A", "a");
 7         map.put("B", "b");
 8         map.put("C","c");
 9
10         /*
11         添加
12         System.out.println("返回值:"+map.put("A","@"));  // 如果之前没有存在该键,那么返回的是null,如果之前就已经存在该键了,那么就返回该键之前对应 的值。
13         Map<String,String> map2 = new HashMap<String, String>();
14         map2.put("M", "m");
15         map2.put("N", "n");
16         map.putAll(map2); // 把map2的元素添加到map集合中。
17
18         */
19
20         /*
21         删除
22         System.out.println("删除的数据是:"+map.remove("A")) ;  //根据键删除一条map中的数据,返回的是该键对应 的值。
23         map.clear(); //清空集合中的所有数据。
24         */
25
26         /* 获取
27         System.out.println("根据指定 的键获取对应的值:"+ map.get("B"));
28         System.out.println("获取map集合键值对个数:"+map.size());
29
30
31         判断
32         System.out.println("判断map集合是否包含指定的键:"+ map.containsKey("B"));
33         System.out.println("判断map集合中是否包含指定 的值:"+ map.containsValue("c"));
34         map.clear();
35         System.out.println("判断map集合是否为空元素:"+ map.isEmpty());
36         */
37         System.out.println("集合的元素:"+ map);
38
39
40     }
41
42 }
时间: 2024-08-05 22:46:53

java---Map接口实现类的相关文章

java的接口、类、属性、方法各有哪些修饰符

参考博客:http://blog.csdn.net/cao_tao199612/article/details/7458245 1. 接口的修饰符只有:public 2. 类的修饰符分为:可访问控制符和非访问控制符两种. 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract :最终类修饰符 final 1.公共类修饰符 public : Java 语言中类 的可访问控制符只有一个: public 即公共的.每个 Java 程序的主类都必须是 public 类

java map接口,可变参数,Collections集合工具类

map接口的实现类存储成对的值,键--值.通过键来找到对应的值. Collection中的集合称为单列集合,Map中的集合称为双列集合 Map中常用的集合为HashMap集合.LinkedHashMap集合. HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致.由于要保证键的唯一.不重复,需要重写键的hashCode()方法.equals()方法. LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈

Java Map 集合实现类

Map 用于保存具有映射关系的数据,集合里会保存两组值,一组用于保存Map里的key,一组用于保存Map里的value,key与map可以是任何引用类型数据.Map的key不允许重复.key与value是单向的一一对应关系,即通过key值总能找到唯一确定的value. 1 Map常用方法 void clear():清除Map集合里的所有元素 boolean containsKey(Object key):查询Map是否包含指定的key,包含则返回true Set entrySet():返回Map

JAVA集合接口及类

各接口及类关系图 Iterable 所有集合的初始接口,实现该接口可进行foreach操作,只有一个iterator()方法,并返回iterator类型: Iterable在java.lang下,Iterator在java.util下,Iterator主要包括hasNext(), next(), remove(); 所有实现了Iterable就可以操作迭代器iterator, 但能使用迭代器iterator就未必实现了Iterable接口,如数组? 为什么需要Iterable? 因为Iterat

Java Map 接口

Map接口中键和值一一映射. 可以通过键来获取值. 给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值. 当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常. 当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常. 当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常. 当尝试修改一个只读的Map时,会抛出一个Unsu

java security接口和类的分布

     包    类/接口名称    说明 com.sun.security.auth.module JndiLoginModule 执行用户名/密码认证使用LDAP或者NIS com.sun.security.auth.module KeyStoreLoginModule 执行基于密钥存储的登录认证 com.sun.security.auth.module Krb5LoginModule 使用kerberos协议进行认证 java.lang SecurityException 表明违反安全,

java map接口

Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value: 1.Map中的键值对以Entry类型的对象实例形式存在: 2.建(key值)不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值. 3.Map支持泛型,形式如:Map<K,V> 4.map 接口和c# 中的Dictionary相近 一.基本用法 Map<String,String>map=new HashMa

java Map接口实现之一TreeMap(不涉及类比较)

需要排序的时候使用TreeMap,是红黑二叉树的典型实现 Map<Integer,String> treemap =new TreeMap<>(); treemap.put(1,"ad"); treemap.put(12, "ff"); treemap.put(4, "bb"); *treemap.keySet()* //返回键的集合 for(Integer i :treemap.keySet()) //返回一个key的集

Java map的匿名类的初始化

可以直接使用: Map<String, Object> testMap = new HashMap<String, Object>() { { put("test1", "test11");  put("test2", "test11"); }}; 进行初始化. 在网上查了下,这个是使用了匿名类的方式来进行初始化.第一层{}是匿名类的定义,第二层{}是初始化函数的定义. 但是没有想通的是 也就是说这应是

JavaSE入门学习37:Java集合框架之Map接口及其实现类HashMap和TreeMap

一Map接口 Map接口中的每个成员方法由一个关键字(key)和一个值(value)构成.Map接口不直接继承于Collection接口,因 为它包装的是一组成对的"键-值"对象的集合,而且在Map接口的集合中也不能有重复的key出现,因为每个键只能与 一个成员元素相对应. Map接口定义了存储"键(key)--值(value)映射对"的方法.实现Map接口的类用来存储键值对.Map接口中包含 了一个keySet()方法,用于返回Map中所有key组成的Set集合.