1.Map接口常用的实现类有HashMap和TreeMap.
2.HashMap类实现的Map集合对于添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行快速查询,由HashMap类实现的Map集合对于添加或删除映射关系效率较高。
3.TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象存在一定的顺序,该使用TreeMap类实现Map集合。
HashMap类
①此类不保证映射的顺序,特别是不保证该顺序恒久不变
②此类实现提供所有可选的映射关系,并允许使用null值和null键,但是必须保证键的唯一性
③此类通过哈希码对其内部的映射关系进行查找
TreeMap类
①该类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定顺序
②由于TreeMap实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是null
③在添加,删除和定位 映射关系,TreeMap类比HashMap类的性能差一些
可以通过HashMap类创建Map集合,当需要顺序输出时,在创建一个完成相同映射关系的TreeMap
首先创建一个Map集合,并添加集合对象,分别遍历由HashMap类与TreeMap类实现的Map集合,观察两者的区别,代码如下:
package com.naya.Person;
public class Emp {
private String e_id;
private String e_name;
public Emp(String e_id,String e_name) {
this.e_id=e_id;
this.e_name=e_name;
}
public String getE_id() {
return e_id;
}
public void setE_id(String e_id) {
this.e_id = e_id;
}
public String getE_name() {
return e_name;
}
public void setE_name(String e_name) {
this.e_name = e_name;
}
}
package com.naya.Person;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class MapText {
public static void main(String[] args) {
Map map=new HashMap(); //由HashMap实现的Map对象
Emp emp=new Emp("001","张三");
Emp emp2=new Emp("005","李四");
Emp emp3=new Emp("004","王一");
map.put(emp.getE_id(), emp.getE_name());
map.put(emp2.getE_id(), emp2.getE_name());
map.put(emp3.getE_id(), emp3.getE_name());
System.out.println(map);
//获取Map集合中的key对象集合
Set set=map.keySet();
System.out.println(set);
System.out.println("HashMap类实现的Map集合,无序");
Iterator it=set.iterator();
while(it.hasNext()){
String str=(String)it.next();
String name=(String)map.get(str);
System.out.println(str+":"+name);
}
System.out.println("TreeMap类实现的Map集合,键对象升序");
TreeMap treemap=new TreeMap(); //创建TreeMap集合对象
treemap.putAll(map);
System.out.println(treemap);
Iterator iter=treemap.keySet().iterator();
while(iter.hasNext()){
String str=(String)iter.next();
String name=(String)map.get(str);
System.out.println(str+":"+name);
}
}
}
运行的结果: