Java集合之Map

一、特点
(1)保存两种数值,key和value(key不允许重复)
(2)keySet()方法,返回map里所有key组成的set集合
(3)value可重复,放入重复的key时value会被覆盖
(3)基本功能:
import java.util.HashMap;
import java.util.Map;

public class MapTest {

	public static void main(String[] args) {
		Map map =new HashMap();
		map.put("java", 100);
		map.put("android", 101);
		map.put("ios", 102);
		System.out.println(map);
		System.out.println("是否包含ios的key: "+map.containsKey("ios"));
		//遍历key-value对
		for(Object key:map.keySet()){
			System.out.println(key+"->"+map.get(key));
		}
	}
}
二、HashMap和Hashtable实现类
(1)Hashtable线程安全,HashMap线程不安全(HashTable和Vector一样古老)
(2)HashMap性能较高
(3)Hashtable不允许null作为key和value,HashMap可以
(4)HashMap和Hashtable不能保证key-value的顺序
(5)判断value相等根据equals()返回true
(6)与HashSet类似,尽量不要使用可变对象作为HashMap和Hashtable的key,如果一定要用,尽量不要在程序中修改key的可变对象(会导致无法准确的找到被修改过的key)

三、LinkedHashMap类
(1)使用双向链表维护key-value的顺序
(2)可避免对key-value的顺序进行排序(只要插入时保持顺序就行了)
import java.util.LinkedHashMap;

public class LinkedHashMapTest {

	public static void main(String[] args) {
		LinkedHashMap scores=new LinkedHashMap();
		scores.put("语文", 90);
		scores.put("数学",70);
		scores.put("应用", 99);
		scores.forEach((key,value)->System.out.println(key+"->"+value));
	}
}

四、SortedMap接口和TreeMap类
(1)红黑树数据结构
(2)自然排序,定制排序

五、WeakHashMap
与HashMap基本相似,区别在于HashMap保留了对实际对象的强引用,只要HashMap不被销毁key所引用的对象就不会被垃圾回收,也不会自动删除这些key-value对。而WeakHashMap保留的是弱引用,可能被垃圾回收,也可能自动删除。

六、IdentityHashMap
比较严格,当且仅当key严格相等(key1==key2)才认为相等。HashMap只要equals()返回true即可。

七、EnumMap
与EnumSet类似

八、性能分析
1、HashMap比Hashtable快
2、TreeMap比HashMap和Hashtable慢
3、一般应多使用HashMap
4、LinkedHashMap比HashMap慢一点
5、EnumMap性能最好,但只能使用同一个枚举类的枚举值作为key


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值