(黑马程序员)Map集合总结

Map集合与collection不同的是,Map存的是一对一对的对象,即键值keykey对应的valuekey是唯一的,每一个key都有自己的value,所以value可以重复。


注意点:

1,添加时putkeyvalue)函数,返回的是key之前对应的value值,如果没有则返回null,所以这个功能也是修改功能,不同collection集合,添加是add,修改是set,同样因为有键,所以可以用getkey)功能获取值,list集合因为有角 标,也有get获取的方法,而set集合只有值,所以只能通过迭代器获取内容。

2,因为getkey)方法获取值时,如果没有这个键值对,则返回null,所以这个函数可以用做判断该集合内是否存在这个key键值对。同样还有containskey)方法判断有无键值对,返回的是boolean

3,打印集合时打印的是集合内各个键值对的对应关系的字符串表现形式,用大括号包括,如 Map<String, String> m=new TreeMap<String ,String>();

m.put("1", "lili");

m.put("2", "露露");

System.out.println(m

输出为{1=lili2=露露}

4map集合内元素的取出,因为是键值对,map集合时没有迭代器的,但是map集合有两个方法,一个是keySet(),返回的keySet集合,另一个是entrySet(),返回的是包含键值对信息对象(Map.Entry<ee>)的Set集合,所以我们就可以用这个两个方法返回的set集合操作以获取内容。


public class MapDemo {

public static void main(String[] args) {

Map<String, String> m=new TreeMap<String ,String>();

m.put("1", "lili");

m.put("2", "露露");

m.put("3", "小强");

Set<String> s=m.keySet();

Iterator<String> i=s.iterator();

while(i.hasNext()){

System.out.println(m.get(i.next()));   //根据建就可以获取值


Map.Entry是定义在map接口内的一个内部类接口,反应了键和值的对应关系的一个接口,其有自己方法如getkey(),get()value()等可以取出键和值

Set<Map.Entry<String,String>> s1=m.entrySet();

Iterator<Map.Entry<String,String>> i1=s1.iterator();

while(i1.hasNext()){

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

System.out.println(me.getKey()+"---"+me.getValue());

}}


5Map常用的子类:

|--Hashtable :内部结构是哈希表,是同步的。不允许null作为键,null作为值。

|--Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。 

|--HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。

|--TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。 

因为map集合要保证键值的唯一,就像set集合保证元素唯一一样,它必须有自己的判断唯一的标准,这里HashMap用的和hashset同样的比较方法,调用要存储对象的hashcode()方法,如果相同再用equals()方法。TreeMap同treeset,是用对象的compareTo()来比较相同和排序,也可以在构造Treemap时传入一个比较器comparator的子类来实现比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值