java学习17-Map-HashMap,TreeMap的理解

1.Map
      (1)将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
        
     (2)Map和Collection的区别?
        A:Map 存储的是键值对形式的元素,键唯一,值可以重复。夫妻对
        B:Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素可重复。
 (3)Map方法
  1:添加功能
 *   V put(K key,V value):添加元素。
 *    如果键是第一次存储,就直接存储元素,返回null
 *    如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值  隐藏一个功能( 替换以前存储的相同的元素)
 * 2:删除功能
 *   void clear():移除所有的键值对元素
 *   V remove(Object key):根据键删除键值对元素,并把值返回
 * 3:判断功能
 *   boolean containsKey(Object key):判断集合是否包含指定的键
 *   boolean containsValue(Object value):判断集合是否包含指定的值
 *   boolean isEmpty():判断集合是否为空
 * 4:获取功能
 *   Set<Map.Entry<K,V>> entrySet():???
 *   V get(Object key):根据键获取值
 *   Set<K> keySet():获取集合中所有键的集合
 *   Collection<V> values():获取集合中所有值的集合
注意:键对应的值如果为空,则返回null;
 * 5:长度功能
 *   int size():返回集合中的键值对的对数
 (4)Map集合的遍历
  A:键找值
   a:获取所有键的集合
   b:遍历键的集合,得到每一个键
   c:根据键到集合中去找值
  
  B:键值对对象找键和值
   a:获取所有的键值对对象的集合
   b:遍历键值对对象的集合,获取每一个键值对对象
   c:根据键值对对象去获取键和值
   
  代码体现:
   Map<String,String> hm = new HashMap<String,String>();
   
   hm.put("it002","hello");
   hm.put("it003","world");
   hm.put("it001","java");
   
   //方式1 键找值
   Set<String> set = hm.keySet();
   for(String key : set) {
    String value = hm.get(key);
    System.out.println(key+"---"+value);
   }
   
   //方式2 键值对对象找键和值
   Set<Map.Entry<String,String>> set2 = hm.entrySet();
   for(Map.Entry<String,String> me : set2) {
    String key = me.getKey();
    String value = me.getValue();
    System.out.println(key+"---"+value);
   }
2. HashMap:是基于哈希表的Map接口实现。
 * 哈希表的作用是用来保证键的唯一性的。
 *
 * HashMap<String,String>
 * 键:String
 * 值:String
3. TreeMap:是基于红黑树的Map接口的实现。
 *
 * TreeMap<String,String>
 * 键:String
 * 值:String
注意:自定义对象中如果成员相同则视为同一个元素,要重写以下方法
TreeMap<Student, String> tm = new TreeMap<Student, String>(
    new Comparator<Student>() {
     @Override
     public int compare(Student s1, Student s2) {
      // 主要条件
      int num = s1.getAge() - s2.getAge();
      // 次要条件
      int num2 = num == 0 ? s1.getName().compareTo(
        s2.getName()) : num;
      return num2;
     }
    });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值