java的集合对比----Map

java集合另一个大接口就是Map,与Collection最大的不同就是,Collection存储的是一个对象,而Map存储的是一对对象,即key—Value的形式存储,key是不能重复的。能把Map实例化的类有4个: HashMap,Hashtable,WeakHashMap,TreeMap。

Map的遍历,是先通过entrySet()获取他set集合,同理,keySet()获取他的key的set集合,values()获取他的value的set集合,再通过set集合取Iterator进行遍历。

HashMap

他有Map的所有特性,key 和 value 都是可以为null的。不是线程安全的,如果key重复了,那么后一个key的value会覆盖前一个key的value,反正保存的集合中,key是不会有重复的。他有个初始容量(16) 和加载因子(默认为0.75),他有一个阈值(初始容量 * 加载因子),如果size超过这个阈值,那么容量就 x 2。

Hashtable

感觉他和HashMap差不多,Hashtable 的初始容量是11,每次size增加 x2 +1个。key和value都不能为null, 他的线程安全的。他的遍历顺序和HashMap是反的,HashMap是从前向后,而Hashtable是从后向前。他多了一种遍历方式,Enumeration。

TreeMap

感觉他就是一个key有顺序的key-value集合,他的key不能是null,value可以。他也不是线程安全的。

WeakHashMap

他和HashMap差不多,但是他的键是弱键,会被GC回收。

最后,若想把线程不安全的集合变成安全的,用 Collections.synchronizedMap,Collections.synchronizedSet,Collections.synchronizedList函数是一种解决办法。

时间: 2024-10-07 06:56:33

java的集合对比----Map的相关文章

Java基础集合Collection Map的概述

概述: 1,jse-collection分类,主要讲解Collection和Map接口的子类及其接口和相关工具类(不含线程安全的集合类). 2,本节介绍一下整体集合框架的结构图. 一.关于java集合涉及到的基本数据结构和算法的理论(这里试试简单的给大家一些参考). 数组(Array),在中间位置插入.删除效率低下,但是按位置索引查找快.链(Linked),在中间位置插入.删除效率高,按位置索引查找效率低下.树.散列. ---------------集合(Set),无序.不重复的原始集合.列表(

Java之集合(七)Map

转载请注明源出处:http://www.cnblogs.com/lighten/p/7327216.html 1.前言 按照顺序,本章本是要对Set的相关类进行介绍及讲解的.但是对于其实现有所了解的都应该知道,Set本身的代码十分简单,其实现都是通过Map来实现的,所以本章介绍一下Java中的Map接口及抽象类. 2.Map接口 除去JDK8添加的新特性不看,Map中定义的方法如下: 1.size():返回键值对个数 2.isEmpty():判断是否为空 3.containsKey(key):键

java的集合对比----Collection(续)

Set接口 关于Set接口,在上课时总是很少提到,所以对它的认识并不多,实现set接口的类,里面的元素没有重复的.他依赖于map,其实我们保存的值,是保存的key,在map中,key不会重复,所以set也就没有重复的元素,它的实现类有三个:HashSet,TreeSet,LinkedHashSet. 1 public static void main(String[] args) { 2 //Set<Integer> set = new HashSet<Integer>(); 3

黑马程序员-Java基础---集合框架-Map

第一讲 Map概述&子类对象特点&共性方法 1.  定义 Map集合:该集合存储键值对,一对一对的往里存,而且要保证键是唯一的.若存了重复的键,那么对应此键的值将被后一个覆盖. 2.  Map子类对象特点 Map集合有如下三个子类: l  Hashtable:底层是哈希表数据结构,不可存入null键或null值.线程同步,JDK1.0就有,效率稍低. l  HashMap:底层是哈希表数据结构,可以存入null键或null值.线程同步,JDK1.2出现,效率较高. l  TreeMap:底

【Java总结-集合】Map接口,HashMap等

Map接口 继承图: Map常用方法 添加,删除操作 Object put(Object key, Object value) Object remove(Object key) void putAll(Map m) void clear 元视图操作的方法 Set keySet() Collection values() Set entrySet() 元素查询操作 Object get(Object key) boolean containsKey(Object key) boolean con

Java基础知识强化之集合框架笔记52:Map集合之Map集合的遍历 键找值

1. Map集合的遍历  Map -- 夫妻对 思路:  A:把所有的丈夫给集中起来.  B:遍历丈夫的集合,获取得到每一个丈夫.  C:让丈夫去找自己的妻子.  转换:  A:获取所有的键  B:遍历键的集合,获取得到每一个键  C:根据键去找值 2. 代码示例: 1 package cn.itcast_01; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Set; 6 7 public cla

Java基础知识强化之集合框架笔记53:Map集合之Map集合的遍历 键值对对象找键和值

1. Map集合的遍历(键值对对象找键和值) Map -- 夫妻对  思路:  A: 获取所有结婚证的集合  B: 遍历结婚证的集合,得到每一个结婚证  C: 根据结婚证获取丈夫和妻子 转换:  A: 获取所有键值对对象的集合  B: 遍历键值对对象的集合,得到每一个键值对对象  C: 根据键值对对象获取键和值 2. 代码示例: 1 package cn.itcast_01; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 impo

java初识集合(list,set,map)

java的集合有三类:list,set,map.list和set继承了collection接口.区别(list可以添加重复对象,且按照索引位置排序:set没有这两种特点). map是通过key操作里面的value,操作的是成对的对象.put放入对象,get取出对象. 另外:colletion没有随机访问的get()方法,因为collection还包括set,而set有自己的内部顺序.所以,要检查collection元素,必须使用iterator对象. 1.list中有ArrayList(类似数组

Java基础——集合(二)——迭代器、Map集合

接上篇,<Java基础--集合(一)--集合体系和Collection> 四.迭代器的使用 使用步骤: 1.通过集合对象获取迭代器对象. 2.通过迭代器对象判断. 3.通过迭代器对象获取. 迭代器原理 由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同. 这个时候,我们就把判断和获取功能定义在了一个接口中,将来,遍历哪种集合的时候,只要该集合内部实现这个接口即可. 迭代器源码 public interface Iterator { publicabstract boolean