热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Map集合分类介绍(hashTable、treeMap、hashMap、linkedHashMap)

首先Map与Collection在集合框架中属并列存在,相当于同级Collection是单列集合,Map是双列集合,Map存储的是键值对结构的数据(key-value)Map存储元素

首先Map与Collection在集合框架中属并列存在,相当于同级

Collection是单列集合, Map 是双列集合,Map存储的是键值对结构的数据(key-value)

Map存储元素使用put方法,Collection使用add方法

Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素

Map集合中键要保证唯一性

Map集合分为:

1、HashTable:底层是哈希表数据结构,线程是同步的,不可以存入null键,null值。效率较低,被HashMap 替代。

2、TreeMap:底层是二叉树数据结构。可以对map集合中的键进行排序。需要使用Comparable或者Comparator 进行比较排序。return 0,来判断键的唯一性。

3、HashMap:底层是哈希表数据结构,线程是不同步的,可以存入null键,null值。要保证键的唯一性,需要覆盖hashCode方法,和equals方法。

3-1、LinkedHashMap:该子类基于哈希表又融入了链表。可以Map集合进行增删提高效率。

HashTable和HashMap的区别:http://blog.sina.com.cn/s/blog_599ed7120100dn2o.html

那么遍历Map集合的方式有3种:

1、将map 集合中所有的键取出存入set集合。SetkeySet()   返回所有的key对象的Set集合再通过get方法获取键对应的值。

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Demo2 {
public static void main(String[] args) {
Map map = new HashMap();
map.put(1, "aaaa");
map.put(2, "bbbb");
map.put(3, "cccc");
System.out.println(map);
// 需要分别获取key和value,没有面向对象的思想
// Set keySet() 返回所有的key对象的Set集合
Set ks = map.keySet();
Iterator it = ks.iterator();
while (it.hasNext()) {
Integer key = it.next();
String value = map.get(key);
System.out.println("key=" + key + " value=" + value);
}
}
}
2、values() ,获取所有的值.Collectionvalues()不能获取到key对象

public static void main(String[] args) {
Map map = new HashMap();
map.put(1, "aaaa");
map.put(2, "bbbb");
map.put(3, "cccc");
System.out.println(map);
// 通过values 获取所有值,不能获取到key对象
// Collection values()
Collection vs = map.values();
Iterator it = vs.iterator();
while (it.hasNext()) {
String value = it.next();
System.out.println(" value=" + value);
}
}

3、Map.Entry对象 推荐使用;Set>entrySet(),将map 集合中的键值映射关系打包成一个对象,Map.Entry对象通过Map.Entry 对象的getKey,
getValue获取其键和值。

public static void main(String[] args) {
Map map = new HashMap();
map.put(1, "aaaa");
map.put(2, "bbbb");
map.put(3, "cccc");
System.out.println(map);
// Set> entrySet()
// 返回的Map.Entry对象的Set集合 Map.Entry包含了key和value对象
Set> es = map.entrySet();
Iterator> it = es.iterator();
while (it.hasNext()) {
// 返回的是封装了key和value对象的Map.Entry对象
Map.Entry en = it.next();
// 获取Map.Entry对象中封装的key和value对象
Integer key = en.getKey();
String value = en.getValue();
System.out.println("key=" + key + " value=" + value);
}
}
TreeMap集合和TreeSet集合都是通过实现Comparable和Comparator这两个接口来比较判断值得唯一性;




推荐阅读
  • 写这篇文章起源于一道面试题,如何将自定义的类对象作为key存储到HashMap中,即考虑怎么判断key的唯一性。首先,我们看以下HashMap中put(…)方法的源码:public ... [详细]
  • HashTable与ConcurrentHashMap均可实现HashMap的功能,对外提供了键值对存储的数据结构。但是在内部结构及实现上有何区别,性能上的差异到底在哪里又是如何导致的 ... [详细]
  • 类Hashtable<K,V>所有已实现的接口:Serializable,Cloneable,Map<K,V>此类实现一个哈希表,该哈希表将键映 ... [详细]
  • 本篇文章给大家分享的是有关Java中怎么对HashMap按键值排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话 ... [详细]
  • 将学生对象和学生的归属地通过键与值存储到map集合中。importjava.util.HashMap;importjava.util.Iterator;importjava.uti ... [详细]
  • 01Map集合概述A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同a:Collection中的集合 ... [详细]
  • 在Java中有多种遍历HashMap的方法,注意Java中所有的Map类型都实现了共有的Map接口,所以接下来方法适用于所有Map(如:HaspMap,TreeMap,Linked ... [详细]
  • Java面试 HashMap、HashSet源码解析
    本章所有源代码基于JDK1.8版本HashMap和HashSet是JavaCollectionFramework的两个重要成员,其中HashMap是Map接口的常用实现类,Hash ... [详细]
  • Struts1学习笔记(6)-----用LookUpDispatchAction类实现方法的动态分配
    在上节中用DispatchAction类实现Action类方法的动态分配时要求方法名必须与From表单的按钮值value取值相同,这样就导致展现给用户的按钮值被紧紧耦 ... [详细]
  • 集合类中只能存放对象,而不能存放原始数据类型的元素,所以当有原始数据类型需要存放时,只能将其转换成相应的包装类对象。1)访问和遍历数组元素时,ArrayList的 ... [详细]
  • 问题描述  给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。输入格式  输入的第一行包含一个整数n,表示给定数字的个数。  第二行包含n个整数,相邻的整 ... [详细]
  • 转载自:http:www.blogjava.netCarpenterLeearchive20160427430268.html总体介绍之所以把HashSet和HashMa ... [详细]
  • 缓存这个东西就是为了提高运行速度的,由于缓存是在寸土寸金的内存里面,不是在硬盘里面,所以容量是很有限的。LRU这个算法就是把最近一次使用时间离现在时间最远的数据删除掉。先说说List:每 ... [详细]
  • 源码阅读之HashMap(JDK8)
    概述HashMap根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。HashMap最多只允许一条记录的键为null,允许多条记 ... [详细]
  • 这篇“HashMap实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅 ... [详细]
author-avatar
上午劳动_951
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有