黑马程序员_Map

Map<K,V>

基本特点:该集合存储键/值对,一对对往里存。Key不能重复,一个Key只对应一个值。

  1. 添加:put(K key, V value);【如果添加相同的键,那么后添加的value会覆盖原有value,并返回原有value】 putAll(Map<? extends K, ? extends V> m);
  2. 删除:clear(); remove(Object key)
  3. 判断:containsValue(Object value); containsKey(Object key);isEmpty();
  4. 获取:get(Object key); size();values();【获取集合中的所有值】entrySet();keySet();
Map
|--Hashtable:底层是哈希表数据结构,不可以存入null键null值,该集合是同步的。
|--HashMap:底层是哈希表数据结构,允许使用null键null值,该集合是不同步的。
|--TreeMap:底层是二叉树数据结构,线程不同步。可以用于给map集合中的key进行排序。
(和Set很像,其实Set集合底层调用的就是Map集合)

Map的两种取出方式:

  1. Set<K> keySet():将Map中所有键存入Set集合,因为Set具备迭代器。可以用迭代器取出所有的键,再用get方法取出每一个键对应的值。
  2. Set<Map.Entry<K,V>> entrySet():将Map的映射关系取出,存入Set集合。(Map.Entry是接口Map的内部接口)
keySet取出方式示例:
import java.util.*;
class KeySetDemo
{
  public static void main(String[] args)
  {
    Map<Integer, String> m = new HashMap<Integer, String>();
    m.put(1, "aaa");
    m.put(2, "bbb");
    m.put(3, "ccc");
    m.put(4, "ddd");
    
    Set<Integer> keySet = m.keySet(); //存放key的Set集合
    
    Iterator<Integer> it = keySet.iterator();  //key的迭代器
    while(it.hasNext())
    {
      Integer key = it.next();
      String value = m.get(key);  //通过key得到value
      System.out.println(key + "=" + value);
    }
  }
}

entrySet取出方式示例:
import java.util.*;
class EntrySetDemo
{
  public static void main(String[] args)
  {
    Map<Integer, String> m = new HashMap<Integer, String>();
    m.put(1, "aaa");
    m.put(2, "bbb");
    m.put(3, "ccc");
    m.put(4, "ddd");

    Set<Map.Entry<Integer, String>> entrySet = m.entrySet(); //把key和value的关系Map.Entry存入Set,以便用迭代器取出

    Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();  //迭代器,存储Map.Entry<K,V>类型
    while(it.hasNext())
    {
      Map.Entry<Integer, String> entry = it.next();
      Integer key = entry.getKey();  //通过Map.Entry的getKey()方法得到key 
      String value = entry.getValue();  通过Map.Entry的getValue()方法得到value
      System.out.println(key + "=" + value);
    }
  }
}
对于HashMap的key,保证其唯一性方法和HashSet相同。

TreeMap可以自行想象。

Map扩展:
map集合被使用是因为具备映射关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值