/*
Map集合:该集合存储键值对,成对出现,而且要保证键值的唯一性。
1、添加
put(K key, V value)
putAll(Map<? extends K,?extends V> m )
2、删除
clear()
remove(Object key)
3、判断
containsKey(Object key)
containsValue(Object value)
isEmpty()
4、获取
get(Object key)
size();
values()
重点取出防方法:
1、Set<Map.Entry<k,v>> entrySet():将M安排集合中的映射关系存入到set集合中,而关系的类型就是Map.Engtry
2、keySet():将Map中所有的键存入Set集合,因为Set集合具有Iterator,所以可以通过迭代方式取出所有的键,
然后根据get方法获取每个键值的值.
Map集合的原理,就是转换为Set集合,通过迭代器
Map:
1、Hashtable“此类实现一个哈希表数据结构,不可以存空键和空值。线程同步(JDK1.0出现)效率低
2、HashMap<K,v>:底层是哈希表数据结构,并允许使用空键和空值,该集合不同步。效率高
3、TreeMap:底层是二叉树,线程不同步,可以用于给map集合中的键值排序。
和Set集合很像,Set底层就是用了Map集合。
*/
import java.util.*;
class MapDemo
{
public static void main(String[] args)
{
Map<String,String> map = new HashMap<String,String>();
// 添加值,如果出现相同的键,则后添加的覆盖前面的,且put方法返回被覆盖的值。
map.put("1","zhangsan");
map.put("2","ljads");
map.put("3","fads");
System.out.println("containsKey:" + map.containsKey("2"));
//System.out.println("remove:" + map.remove("2"));
System.out.println("get:" + map.get("2")); //键值不存在返回空null,注意HashMap中键值或值为空,获取都是返回null
// 先获取map集合中的所有键值的Set集合
Set<String> pSet =map.keySet();
//有了Set集合,获取迭代器
Iterator<String> it =pSet.iterator();
while(it.hasNext())
{
//通过get方法获取值
System.out.println(map.get(it.next()));
}
//将Map集合的关系取出,存入Set集合中
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> pIt = entrySet.iterator();
while(pIt.hasNext())
{
Map.Entry<String,String> mn = pIt.next();
String key = mn.getKey();
String value = mn.getValue();
System.out.println("key:" + key + " value:" + value);
}
}
}
/*
Map.Entry中Entry也是一个借口,它是Map接口中的一个内部接口
*/
interface Map
{
public static interface Entry
{
public abstract Object getKey();
public abstract Object getValue();
}
}