16天-01-集合(Map概述)
l Map集合:该集合存储键值对,一对一往里存,而且要保证键的唯一性。
1) 添加
put(K key,Vvalue)
putAll(Map<?extends K,? extends V> m)
2) 删除
clear()
remove(Objectobj)
3) 判断
containsValue(Objectobj)
containsKey(Objectkey)
isEmpty()
4) 获取
get(Object key)
size()
values()
16天-02-集合(Map子类对象特点)
l Map
|--HashTable:底层是哈希表数据表结构,不可以存入null键null值,该集合是线程同步的。jdk1.0效率低。
|--HashMap:底层是哈希表数据结构,允许使用null键null值,该集合不同步。jdk1.2效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步,可以用于给map集合中的键进行排序。
l 其实和Set很像。
其实,Set底层就是使用Map集合。
l 注意,在使用map时,当使用put方法存键值对的时候,新key和key相同,新的value会覆盖掉旧value。
举例:
Map<String,String>map = new HashMap<String,String>();
map.put("a01", "123");
map.put("a01","234");
map.put("a02","234");
map.put(null,"234");
map.put("a03",null);
map.put(null,null);
Collection<String>coll = new map.values();
System.out.println(coll);
System.out.println(map);
打印结果:
[null, 234, 234, null]
{null=null, a01=234, a02=234, a03=null}
16天-04-集合(Map-keySet)
l Map集合的两种取出方式:
1) keyset:将map中的所有键存入到Set集合。因为set具备迭代器。所有可以迭代方式取出所有键,再根据get方法,获取每个键对应的值。
Map的取出原理,将Map集合转换为Set集合,再通过迭代器取出。
示例:
class Demo{
publicstatic void main(String[] args){
Map<String,String> map = newHashMap<String,String>();
map.put(“01”,”zhangsan01”);
map.put(“02”,”zhangsan02”);
Set<String> keyset = map.keySet();
Iterator<String> it = keyset.iterator();
while(ir.hashNext()){
String key = it.next();
String value =map.get(key);
System.out.println(“key:”+key+”,value”+value);
}
}
}
2) Set<Map.entry<k,v>>entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:map.Entry。
示例:
Set<Map.Entry<String,String>>entrySet = map.entrySet();
Iterator<Map.Entry<String,String>>it = entrySet.iterator();
while(it.hasNext()){
Map.Entry<String,String>me = it.next();
Stringkey = me.getKey();
Stringvalue = me.getValue();
System.out.println(key+”:”+value);
}
l Map.entry其实Entry也是一个接口,它是Map接口中的一个内部接口。
interface Map{
publicstatic interface Entry{
public abstractObject getKey();
public abstractObject getValue();
}
}
class HashMap implements Map{
classHahs implements Map.Entry{
public Object getKey(){
}
public Object getValue(){
}
}
}