Map
因为返回的值涉及到null值,所以返回的值需要使用基本数据类型的包装类来接收。如果使用基本数据类型会发生空指针异常
主要方法:
v put(K key ,V value):往map集合中添加元素,如果集合中已经有对应的key,那么代替value,旧的value作为返回值。如果集合中没有对应的key,那么直接添加,返回的value为空。
v get(Object key):获取集合中对应key的value值,如果不存在该键值对,则返回空。
v remove (Object key) :移除key的键值对,返回该key的value值。如果没有对应的键值对,则返回空。‘
boolean containsKey( Object key):跟get方法一样,判断集合中是否有该键值对
Set keySet() : 返回双列集合的所有键
第一种遍历Map的方式:
使用其keySet方法可以返回一个包含所有key的set集合
第一步:使用map的keySet方法返回一个set集合
第二步:使用增强for遍历map中的每个key
第三步:使用map的get方法获取每个key的value值
HashMap
HashMap的用法与HashSet是类似的,
对于自定义类型:
如果要保证其中的key或value值唯一,那么必须对相应的类重写hashCode() 和 equals() 方法
对于已有的数据类型(基本数据类型或String等):
已经自己重写了,put时重复会自动替换原来的value值,并将旧的value值返回
###LinkedHashMap
与LinkedHashSet是类似的
有序
不可重复
无索引
HashTable
Java.util.HashTable集合 实现了 Map<K,V>接口
区别:
HashTable:底层是哈希表,单线程集合,线程安全,速度慢
HashSet:底层是哈希表,多线程集合,线程不安全,速度快
HashTable:不可以存储null值,null键
会出现空指针异常
HashSet(包括其它所有集合):可以存储空值
HashTable:和Vector一样,都是在Java1.2之后就被(ArrayList、HashMap)取代了,但其子类Properties依旧较常使用,Properties是唯一一个与IO流相结合的集合,