Map集合

Map 集合的特点
能够存储唯一的列数据(唯一,不可重复)set
能够存储可以重复的数据(可重复)list
值的顺序取决于键的顺序
键和值都是可以存储 null 元素的
一个映射不能包含重复的键,每个键最多只能映射一个值
实现类:HashMap ,底层是哈希表结构
特点:
键无序,唯一,类似于Set集合
值有序,可重复,类似于List
底层数据结构是哈希表,保证键唯一
允许键为null,值为null
实现类:LinkedHashMap ,底层是哈希表和链表结构
特点:
键有序,唯一,
值有序,可重复,类似于List
底层数据结构是哈希表和链表,哈希表保证键唯一,链表保证键有序
实现类:TreeMap
具体取决于使用的构造方法。
特点:
键可排序,唯一,
值有序,可重复,类似于List
底层数据结构是自平衡的二叉树,可排序
排序方式类似于TreeSet,分为自然排序和比较器排序,具体取决于使用的构造方法
实现类:TreeMap
以弱键 实现的基于哈希表的 Map。在 WeakHashMap 中,当某个键不再正常使用时,
将自动移除其条目。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,
这就使该键成为可终止的,被终止,然后被回收。
丢弃某个键时,其条目从映射中有效地移除,因此,该类的行为与其他的 Map 实现有所不同。

接口:Dictionary<K,V>
实现类:HashTable
特点:
不允许null键和null值
线程安全,效率低
面试题:HashMap和Hashtable的区别
HashMap是不安全的不同步的效率高的 允许null键和null值
Hashtable是安全的同步的效率低的 不允许null键和null值
底层都是哈希表结构
常用功能:

/*
 * 1.添加功能
 *      V put(K key, V value)  
 *      void putAll(Map<? extends K,? extends V> m) 
 * 2.删除功能
 *      V remove(Object key) 
 *      void clear() 
 * 3.遍历功能
 *      Set<K> keySet() 
 *      Collection<V> values()
 *      Set<Map.Entry<K,V>> entrySet() 
 * 4.获取功能
 *      V get(Object key) 
 * 5.判断功能
 *      boolean containsKey(Object key) 
 *      boolean containsValue(Object value) 
 *      boolean isEmpty() 
 * 6.修改功能
 *      V put(K key, V value) 
 *      void putAll(Map<? extends K,? extends V> m) 
 * 7.长度功能
 *      int size()
 */

遍历功能:

		Set<String> keys = map.keySet();
		for(String str : keys){
			System.out.println(str);
		}
		
		System.out.println("============");
		Collection<String> values = map.values();
		for(String str : values){
			System.out.println(str);
		}
		
		System.out.println("============");
		Set<Entry<String,String>> keyValue= map.entrySet();
		for(Entry<String,String> str : keyValue){
			String key = str.getKey();
			String value = str.getValue();
			System.out.println(key + " = " + value);
		}
		
		System.out.println("============");
		Set<String> key = map.keySet();
		Iterator<String> it = key.iterator();
		while(it.hasNext()){
			String ikey = it.next();
			String ivalue = map.get(ikey);
			System.out.println(ikey+" = " + ivalue);
		}
		
		System.out.println("============");
		Set<Entry<String,String>> keyValues= map.entrySet();
		Iterator<Entry<String,String>> iter = keyValues.iterator();
		while(iter.hasNext()){
			Entry<String,String> ikeyValue = iter.next();
			System.out.println(ikeyValue.getKey() + "=" + ikeyValue.getValue());
		}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值