Map有哪些常用类,各有什么特点?
public class TestDemo {
public static void main(String[] args) {
MapTest();
}
//定义Map集合测试方法
private static void MapTest()
{
//定义一个Hashtable对象
Map hashTable=new Hashtable<String, Integer>();
hashTable.put("liuming", 23);
hashTable.put("jinyao", 22);
hashTable.put("ganbin", 25);
//hashTable.put(null,null)//hashTable.put(null,null)会运行出错,因为Hashtable不允许存null值或null键
//Map集合获取集合的Value值有两种方式,分别是使用keySet()和entrySet()方法实现
//这里使用keySet()方法获取value值,输出结果为:25 22 23
Set keySet=hashTable.keySet();
for(Iterator it=keySet.iterator();it.hasNext();)
{
System.out.print(hashTable.get(it.next())+" ");
}
System.out.println();
//定义一个HashMap对象
Map hashMap=new HashMap<String, Integer>();
hashMap.put("xiaoming", 12);
hashMap.put("xiaohua", 13);
hashMap.put("gouzi", 15);
hashMap.put(null,null);
//这里使用获取Map集合Value值的第二种方法:entrySet()方法来实现
//entrySet()返回类型是Set<Map.Entry<k,v>>集合,里面存的类型是:键和值的映射关系。即将Map集合中映射关系存入到Set集合中
//然后通过Set集合的迭代方法取出关系,通过Map.Entry的getKey()和getValue()分别取出key键和value值。
Set<Map.Entry<String, Integer>> entrySet=hashMap.entrySet();
Iterator<Map.Entry<String, Integer> > iterator=entrySet.iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> me=iterator.next();
String key=me.getKey();
Integer value=me.getValue();
System.out.print(value+" ");
}
System.out.println();
//定义TreeMap集合,对存入集合中的元素进行排序
Map treeMap =new TreeMap<String, String>();
treeMap.put("bb", "yuwen");
treeMap.put("ee", "shuxue");
treeMap.put("gg", "yinyu");
treeMap.put("aa", "wuli");
treeMap.put("cc", "huaxue");
treeMap.put("dd", "shengwu");
//这里采用entrySet()方法来取元素,结果为:aa-wuli bb-yuwen cc-huaxue dd-shengwu ee-shuxue gg-yinyu
//通过取得结果我们会发现TreeMap按键对存入的元素进行了排序。联想到TreeSet,我们可以知道TreeSet和TreeMap都具有排序功能
Set<Map.Entry<String, String>> teSet=treeMap.entrySet();
Iterator<Map.Entry<String, String>> iterator2=teSet.iterator();
while (iterator2.hasNext()) {
Map.Entry<String, String> me=iterator2.next();
String key=me.getKey();
String value=me.getValue();
System.out.print(key+"-"+value+" ");
}
}
} |