1.偶对象保存:Map接口
偶对象指的是一对对象,即两个对象要同时保存。这两个对象是按照key=value 的形式进行定义的,即可通过key找到相应的value数据。
Map接口的主要操作方法
No | 方法名称 | 描述 |
---|---|---|
1 | public V put(K key, V value) | 向集合中保存数据 |
2 | public V get(Obeject key) | 通过指定的key取得对应的value |
3 | public Set<K>keySet() | 将Map中的所以key以Set集合的方式返回 |
4 | public Set<Map.Entry<K,V>>entrySet() | 将Map集合变为Set集合 |
在Map接口中有两个常用的子类HashMap和Hashtable
1.1 HashMap
HashMap是Map接口中使用最多的一个子类,子类定义如下
public class HsahMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>,Cloneable,Serializable
例子:Map方法使用
import java.util.HashMap; import java.util.Map; public class test{ public static void main(String[] args) { Map <Integer,String> map = new HashMap<Integer,String>(); map.put(8, "张三"); map.put(null, "李四"); map.put(30, "王五"); map.put(6, "赵六"); map.put(25, "张三"); System.out.println(map.get(8)); System.out.println(map.get(null)); } }
程序运行结果:
张三
李四
Map和Collection在操作上的不同:
Collection接口设置完内容的目的是为了输出
Map接口设置完的目的是为了查找
例:取得全部key,全部的key通过set集合返回
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class test{ public static void main(String[] args) { Map <Integer,String> map = new HashMap<Integer,String>(); map.put(8, "张三"); map.put(null, "李四"); map.put(30, "王五"); map.put(6, "赵六"); map.put(25, "张三"); Set<Integer>set = map.keySet(); Iterator <Integer>iter = set.iterator(); while(iter.hasNext()){ Integer key =iter.next(); System.out.println(key+"---->"+map.get(key)); } } }
程序运行结果:
null---->李四
6---->赵六
8---->张三
25---->张三
30---->王五
1.2 Hashtable
Hashtable不能设置NULL
HashMap和Hashtable的区别
No | 区别 | HashMap | Hashtable |
---|---|---|---|
1 | 推出时间 | JDK1.2 | JDK1.0 |
2 | 性能 | 采用异步处理方式,性能更高 | 采用同步处理方式,性能相对较低 |
3 | 安全性 | 非线程安全 | 线程安全 |
4 | 设置null | 允许将key或value设置为null | 不允许出现null否则出现空指针异常 |
关于Map集合的输出问题
public static interface Map.Entry<K,V>
这是一个在Map接口中使用static定义的一个内部接口
在Map.Entry内部接口中有两个常用方法
取得当前的key:public K getKey();
取得当前的value:public V getValue();
Map使用使用Iterator输出的操作步骤
1使用Map接口中的entrySet()方法,将Map集合变为Set集合
2.取得了Set接口实例后就可以利用iterator()方法取得Iterator的实例化对象
3.使用Iterator迭代找到每一个Map.Entry对象,并进行key和value的分离
例
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class test{ public static void main(String[] args) { Map<Integer,String>map=new HashMap<Integer,String>(); map.put(3,"hehe"); map.put(4,"haha"); map.put(20,"niebi"); Set<Map.Entry<Integer,String>>set=map.entrySet(); Iterator<Map.Entry<Integer,String>> iter=set.iterator(); while(iter.hasNext()){ Map.Entry<Integer, String> me =iter.next(); System.out.println(me.getKey()+" "+me.getValue()); } } }