黑马程序员 + 第16天 Map集合

------- android培训java培训、期待与您交流! ----------


day16

1、Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性

MapCollection的区别

1MapCollection在集合框架中属于并列存在;

2Map中存储的是键值对,存储元素使用put方法;Collection使用add方法。

3Map集合没有直接取出元素的方法,而是先转成Set集合,再通过迭代获取元素。

4Map集合中的键要保证唯一性。

Map常用方法

1,添加。

put(K key, V value) 

putAll(Map<? extends K,? extends V> m) 

添加元素:如果添加时出现相同的键,那么后添加的值会覆盖原有键对应的值,并且put方法会返回被覆盖的值

2,删除。clear()  remove(Object key) 

3,判断。

containsValue(Object value) 

containsKey(Object key)  isEmpty() 

4,获取。get(Object key)  size()  values() 获取map集合中所有的值

可以通过get方法的返回值来判断一个键是否存在,通过返回null来判断。

entrySet() 

keySet() 

2Map

|--Hashtable:底层是哈希表数据结构,不可以存入nullnull该集合是线程同步的jdk1.0,效率低。

|--HashMap:底层是哈希表数据结构,允许使用nullnull值,该集合是不同步的。将Hashtable替代,jdk1.2效率高

|--TreeMap:底层是二叉树数据结构,线程不同步。可以给Map集合中的键进行排序。

Map和Set很像,其实Set底层就是使用了Map集合

3Map集合的两种取出方式: 参见MapDemo2.java

1Set<k> keySet:将Map中所有的键存入到Set集合。因为Set具备迭代器,所以可以用迭代方式取出所有的键,再根据get方法获取每一个键对应的值。

Map集合的取出原理:将Map集合转成Set集合,再通过迭代器取出。

//第一种取出方式 keySet

Set<Student> keySet = hm.keySet();

Iterator<Student> it = keySet.iterator();

while(it.hasNext())

{

Student stu = it.next();

String addr = hm.get(stu);

System.out.println(stu+".."+addr);

}

2Set<Map.Entry<k,v>> entrySet:将Map集合中的映射关系存入到了Set集合中,而这个关系的数据类型就是:Map.Entry

Entry其实就是Map中的一个static内部接口。为什么要定义在内部呢

因为只有有了Map集合,有了键值对,才会有键值的映射关系。关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素。

//第二种取出方式 entrySet

Set<Map.Entry<Student,String>> entrySet = hm.entrySet();

Iterator<Map.Entry<Student,String>> iter = entrySet.iterator();

while(iter.hasNext())

{

Map.Entry<Student,String> me = iter.next();

Student stu = me.getKey();

String addr = me.getValue();

System.out.println(stu+"........."+addr);

}

参见 MapTest.java

4、什么时候使用map集合呢? 当数据之间存在着映射关系时,就可以使用map集合(map集合被使用是因为具备映射关系)。

5、map扩展知识,map中包含map,一对多的关系 。 参见MapDemo3.java


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值