一、Map集合的特点
一次添加一对元素,Collection一次添加一个元素。
Map也被称为双列集合,Collection集合称为单列集合。
其实map集合中存储的就是键值对。
map集合中必须保证键的唯一性。
常用的方法:
1.添加
value put(key,value); //返回前一个和key关联的值,如果没有,返回null
//存相同键时,值会覆盖。
2.删除
void clear(); //清空map集合
value remove(key); //根据指定的key翻出这个键值对。
3.判断
boolean containsKey(key);
boollean containValue(value);
boolean isEmpty();
4.获取
value get(key); //通过键获取值,如果没有该键返回空
取出map中所有元素:
(1)keySet方法,获取map集合中所有的键
//通过keySet方法获取map集合中所有的键所在的Set集合,在通过Set的迭代器获取到每一个键
//在对每一个键通过map集合的get方法获取其对应的值
Set<Integer> ketset = map.keySet(); Iterator<Integer> it = keyset.iterator(); while(it.haxNext()){ Integer key = it.next(); String value = map.get(key); System.out.println(key+".."+value); }
(2)使用entrySet方法,获取map集合中所有的键和值
该方法将键和值得映射关系作为对象存储到了Set集合中,而这个映射关系的类型为Map.Entry类型(结婚证)
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapDemo { public static void main(String[] args) { Map<Integer,String> map = new HashMap<Integer,String>(); map.put(1,"abc1"); map.put(2,"abc2"); map.put(3,"abc3"); map.put(4,"abc4"); map.put(5,"abc5"); Set<Map.Entry<Integer,String>> entryset = map.entrySet(); //Set集合中类型为Map.Entry类型 Iterator<Map.Entry<Integer,String>> it = entryset.iterator(); //定义Map.Entry类型的迭代器 while(it.hasNext()){ Map.Entry<Integer,String> me = it.next(); System.out.println(me.getKey()+"..."+me.getValue()); //通过使用Map.Entry接口中的getKey,getValue方法获取键和值 } } }
(3)使用values方法,返回map集合中的所有值
该方法将map集合中的值作为对象存储在Collection集合中
import java.util.*; public class MapDemo { public static void main(String[] args) { Map<Integer,String> map = new HashMap<Integer,String>(); map.put(1,"abc1"); map.put(2,"abc2"); map.put(3,"abc3"); map.put(4,"abc4"); map.put(5,"abc5"); Collection<String> v1 = map.values(); Iterator<String> it = v1.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
二、Map集合常用子类
1.Hashtable
内部结构是哈希表,是同步的,不允许null作为键,null作为值
常用子类:Provider
用来存储键值对型的配置文件信息,可以与IO技术相结合。
2.HashMap
内部结构是哈希表,不是同步的,允许null作为键,null作为值
3.TreeMap
内部是二叉树,不是同步的,可以对Map集合中的键进行排序