Map集合

Map接口

  • Map存储的是键值对(键是唯一的,不可重复,值可以重复)
  • 常用的实现子类为:

              HashMap<K,V>       存储数据用哈希表结构,无序,因为要保证键的唯一  要重写hashCode和equals方法

              LinkedHashMap<K,V>   采用哈希表结构+链表结构,通过链表结构可以保证存取顺序一致,通过哈希表结构可以保证键的唯一,需要重写hashCode和equals方法

  • HashMap

  • 常用方法
  1.           V  put<K,V>    将键值对存储到集合中    K为键的对象   V为值的对象

                            存储的是重复的键的时候,将原有的值覆盖       

                           返回值,当存储的值是不重复的,为null    重复的时候是   “覆盖之前的值”

  1.           V    get(K)          通过键获取值

                                  如果集合中没有这个键   返回null

  1.           V   remove(K)      移除集合中的键值对,返回被移除之前的值

                              移除的是集合中没有的,则返回null

  • 遍历              增强for不能遍历map     
  1. Map集合的方法    keySet()      把所有的键存储到Set集合,返回的set是HashMap中的内部类KeySet的对象

                       使用keySet,将所有的键存储到Set集合中

                       遍历Set集合,获取出Set集合中的所有元素(Map中的键)

                       调用get,通过键获取值

  1. Entry接口(内部类)         Entry<K,V>     静态的接口(直接用map接口调用)     包含方法          K   getKey()获取键              V    getValue()获取值           获取内部类   需要Map.Entry

                      Entry表示对应关系     遍历思想   可以通过Entry的对象(对应关系)来获取遍历

                          Map中有一个       entrySet()方法           获取键值对的对应关系(键是夫  值是妻   则对应关系就是结婚证)

           实现步骤

Map <String , String>  map = new HashMap<String,String>();

//1.调用map集合方法entrySet   将集合中的对应关系存储到Set集合中       
Set< Map.Entry<String,String> >   set = map.entrySet();

//2.迭代Set集合
Iterator< Map.Entry<String,String> >  it = set.iterator();
while(it.hasNext()){

    //3.获取出Set集合的元素,就是  映射关系对象
   Map.Entry<String,String>  entry =  it.next();

   //4.通过映射关系对象方法    getKey    getValue  方法获取键值对
   String key = entry.getKey();
   String  value = entry.getValue();
}

 

  • LinkedHashMap       继承HashMap    保证迭代的顺序

  • Map接口实现类Hashtable       线程安全 运行速度慢          不允许存储null值  null键(被取代,不建议使用)
  • Map接口实现类HashMap        线程不安全  运行速度快     允许存储null值  null键
  • Hashtable的子类properties    经常使用

方法的可变参数    int...a            类型确定 个数不确定的时候使用     本质就是一个数组

      注意事项:一个参数列表只允许使用一个可变参数             可变参数需要放到参数列表的末尾

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值