Map也是集合框架之一,我们首先来看看Map有哪几种,再说说它的共性方法。


Map的分类:

(1)HashTable:底层是哈希表数据结构,不可以存入null键null值。该集合线程是同步的,jdk1.0效率较低,现被HashMap取代。

(2)HashMap:底层是哈希表数据结构,允许存入null键null值。该集合线程是不同步的,将HashTable替代。jdk1.2出现效率较高。

(3)TreeMap:底层是二叉树数据结构,线程不同步,可以给map集合中的键进行排序。


map的共性方法需要注意的就是map集合元素的取出方式,我们需要掌握它。


总的来说Map集合中元素的取出就两种方式:


(1)将map中所有键存入到Set集合(Set<E> keySet)。因为Set具备迭代器。

所有可以用迭代方式取出所有的键,再通过get()方法获取每一个键对应的值。

其原理就是:将map集合转成Set集合,再通过Set集合迭代取出。

(2)将map中的映射关系(Set<Map.Entry<k,v>> entrySet)存入到Set集合中,再通过Set集合将其迭代出来。迭代出的数据类型是:Map.Entry。


说了两种取出方式估计是看糊涂了,到底是怎么把Map集合弄成Set集合再将元素取出呢?我们可以通过代码来理解。

代码示例:

import java.util.*;

public class MapDemo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("L01", "qq");
map.put("L02", "ww");
map.put("L03", "ee");
map.put("L04", "rr");
map.put("L05", "tt");

// 先获取map集合的所有键的Set集合,KeySet();
Set<String> KeySet = map.keySet();
// 将map集合中的映射关系取出。存入到Set集合中。
Set<Map.Entry<String, String>> entrySet = map.entrySet();

// 有了Set集合。就可以获取其迭代器。
Iterator<String> it1 = KeySet.iterator();
Iterator<Map.Entry<String, String>> it2 = entrySet.iterator();
//第一种将Map的键值存入Set集合,再将Map中的元素迭代
while (it1.hasNext()) {
String key = it1.next();//获取Map里的键
String value = map.get(key);//获取Map里的值
System.out.println("ket:" + key + ",value:" + value);
}
System.out.println("");
//第二种将Map的映射关系存入Set集合,再将Map中的元素迭代
while (it2.hasNext()) {
Map.Entry<String, String> me = it2.next();
String key = me.getKey();//获取映射关系里的键
String value = me.getValue();//获取映射关系里的值
System.out.println("ket:" + key + ",value:" + value);
}
}
}

以上代码,用了两种方式把同一map集合中的所有元素取出方式。


还有需要注意的是map集合如果第二次存入相同键的元素,则第一次存入的元素会被第二次存入的元素覆盖掉。这也是体现了map的特性,它是以键值对的形式存在的一个键对应一个值。

示例代码:

import java.util.Collection;
import java.util.HashMap;

public class MapDemo {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
// 添加元素
// 添加元素,如果出现相同的键后添加的会覆盖原有的值 并返回原有的值
System.out.println("put:" + map.put("L01", "hhh"));
System.out.println("put:" + map.put("L01", "覆盖了hhh"));
map.put("L02", "ggg");
map.put("L03", "jjj");

// 获取map中所有值
Collection<String> coll = map.values();
System.out.println(coll);
System.out.println(map);
}
}

输出结果:


以上就是我们对map集合必须掌握的东西。

更多相关文章

  1. Java:在特定队列大小之后,以提交方式阻塞提交的ExecutorService。
  2. java入门---数据结构操作实例之获取链表的元素
  3. Java的Web项目中Web.xml配置文件元素详解
  4. Java XML - 具有相同名称的嵌套元素
  5. 二分法查找递归方式()
  6. 黑马程序员 Java中根据YYYY-MM-DD格式的日期计算为星期几的两种

随机推荐

  1. php+js+ajax实现简单的回帖功能
  2. PHP 闭包之变量作用域
  3. PHP实现笛卡尔积算法
  4. PHP实现支付宝支付的方法
  5. 关于PHP中sqlite3的使用
  6. PHP 生成随机红包算法
  7. 使用phpqrcode生成二维码
  8. php调试利器:FirePHP的安装与使用
  9. PHP Redis相关操作大全
  10. 高级PHP工程师必备的编码技巧及思维