一、Map接口
Map意为映射,java.util.Map接口规定了一组通过键值对(key-value)方式组织的集合,Map的数据也是不能保证顺序的,也就是Map中数据的顺序与放置的先后顺序无关,其基本操作时get和put,即放置数据和取数据,我们一般是通过键key获得其对应的值value。
我们在通过键取值时,不管数据量,一般其随机访问速度都是一致的,但是如果经常需要遍历整个Map的所有数据,那么Map可能就不是最好的选择。
二、HashMap实现
HaspMap实现了Map接口,所以在键值对存储关系中,顺序是无需考虑,对象放到HashMap中,所在的位置时由哈希来分布在集合中所在的位置,取值时一般不理会这个位置,而是通过键Key去索引取得对象。跟hashSet一样,Hash序列为HashMap的基本操作(get 和 put)提供稳定的性能。
常用方法:
void clear();//从此映射中移除所有映射关系
boolean containsKey(Object key);//如果此映射包含对于指定键值的映射关系,则返回true
boolean containsValue(Object value);//如果此映射将一个或多个键值映射到指定值,则返回true
Set<Map,Entry(k,v)>;//entrySet返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。
boolean isEmpty() //返回此映射所包含的映射关系的 Set 视图。
V get(Object key) 如果此映射不包含键-值映射关系,则返回 true。
Set<K> keySet() 返回此映射中所包含的键的 Set 视图。
V put(K key, V value) 在此映射中关联指定值与指定键。
void putAll(Map<? extends K,? extends V> m) 将指定映射的所有映射关系复制到此映射中,这些映射关系将替换此映射目前针对指定映射中所有键的所有映射关系。
V remove(Object key) 从此映射中移除指定键的映射关系(如果存在)。
int size() 返回此映射中的键-值映射关系数。
二、示例代码
public class Stu3{
public static void main(String []args){
HashMap map=new HashMap();
Student stu1 = new Student();
stu1.setNum(1);
stu1.setName("刘德华");
Student stu2 = new Student();
stu2.setNum(2);
stu2.setName("张学友");
Student stu3 = new Student();
stu3.setNum(3);
stu3.setName("曾志伟");
Student stu4 = new Student();
stu4.setNum(3);
stu4.setName("刘宝");
//add key and value,key唯一
map.put("440602",stu2);
map.put("440601", stu1);
map.put("440603", stu3);
map.put("440603", stu4);
//delete
//map.remove("440602");
System.out.println("大小:"+map.size());
Student stu=(Student)map.get("440601");
System.out.println(stu.getName());
//遍历
//1.取得key
Set keySet=map.keySet();
//2.循环,迭代
Iterator iterator=keySet.iterator();
while(iterator.hashNext()){
Object object=iterator.next();
Student student=(Student)map.get(object.toString());
System.out.println(student.getNum()+":"+student.getName());
}
}
}