java(Map接口)

1、Map用于保存具有映射关系的数据:Key---Value(双列元素)

2、Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中

Node<K,V> newNode(int hash, K key, V value, Node<K,V> next) {
        return new Node<>(hash, key, value, next);
    }

3、Map中的key不允许重复,当有重复的key时,value就会发生替换

4、Map中的value可以重复

5、Map的key可以为null,value也可以为null,注意key为null时,只能有一个,value为null时,可以为多个

6、常用的String类作为Map的key

7、key和value之间存在单向一对一关系,即通过指定的key总能找到对应的value

8、Map存放数据的key--value是放在一个Node中的,同时Node实现了Entry接口

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Study {
    @SuppressWarnings({"all"})
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();
        hashMap.put("no1","jack");
        hashMap.put("no2","smith");
        //1.k-v最后是HashMapNode$ node = newNode(hash,key,value,null)
        //2.k-v为了方便程序员的遍历,还会创建EntrySet集合,该集合存放的元素类型为Entry
        //  而一个Entry对象就有k,v EntrySet<Entry<k,v>>,即:transient Set<Map.Entry<K,V>> entrySet;
        //3.在entrySet中,定义的类型是Map.Entry,但实际上存放的还是HashMap$Node
        //  因为HashMap$Node implements Map.Entry<K,V>
        //4.当把HashMap$Node对象存放到entrySet里面将会方便我们遍历
        //  因为Map.Entry提供了getKey()和getValue()方法
        Set set = hashMap.entrySet();
        System.out.println(set.getClass());//此时的set的getClass为 EntrySet
        //public Set<Map.Entry<K,V>> entrySet() {
        //        Set<Map.Entry<K,V>> es;
        //        return (es = entrySet) == null ? (entrySet = new EntrySet()) : es;
        //    }
        for (Object obj : set) {
            //向下转型
            Map.Entry entry = (Map.Entry) obj;
            System.out.println(entry.getKey()+" "+entry.getValue());
        }
        Set set1 = hashMap.keySet();
        System.out.println(set1.getClass());//KeySet
        Collection value = hashMap.values();
        System.out.println(value.getClass());//Values
    }
}

Map接口的常用方法:

1、put:添加(如果键相同,则value发生替换)

2、remove:根据键删除映射关系

3、get:根据键获取值

4、size:获取元素个数

5、isEmpty:判断个数是否为0

6、clear:清除

7:containsKey:查找键是否存在

import java.util.HashMap;

public class Study {
    @SuppressWarnings({"all"})
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();
        //put
        hashMap.put("no1","jack");
        hashMap.put("no2","a");
        hashMap.put("no3","b");
        hashMap.put("no1","smith");
        System.out.println(hashMap);
        //remove
        hashMap.remove("no2");
        System.out.println(hashMap);
        //get
        System.out.println(hashMap.get("no1"));
        //size
        System.out.println(hashMap.size());
        //isEmpty
        System.out.println(hashMap.isEmpty());
        //clear
        hashMap.clear();
        System.out.println(hashMap);
        //containsKey
        System.out.println(hashMap.containsKey("no1"));
    }
}

Map接口对象遍历方式:

1、keySet:获取所有的键

2、values:获取所有的值

3、entrySet:获取所有关系<k,v>

import java.util.*;

public class Study {
    @SuppressWarnings({"all"})
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();
        hashMap.put("no1","a");
        hashMap.put("no2","b");
        hashMap.put("no3","c");
        //先取出所有的Key,通过Key取出对应的Value
        Set set = hashMap.keySet();
        for (Object key : set) {
            System.out.println(hashMap.get(key));
        }
        //迭代器
        Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            Object key = iterator.next();
            System.out.println(hashMap.get(key));
        }
        //取出所有的values
        Collection values = hashMap.values();
        //for,增强for,迭代器
        for (Object value : values) {
            System.out.println(value);
        }
        Iterator iterator1 = values.iterator();
        while (iterator1.hasNext()) {
            Object value = iterator1.next();
            System.out.println(value);
        }
        //通过EntrySet来获取<k,v>
        Set entrySet = hashMap.entrySet();//EntrySet<Map.Entry<K,V>>
        //增强for
        for (Object kv : entrySet) {
            Map.Entry entry = (Map.Entry) kv;
            System.out.println(entry.getKey()+"-"+entry.getValue());
        }
        //迭代器
        Iterator iterator2 = entrySet.iterator();
        while (iterator2.hasNext()) {
            Object kv = iterator2.next();
            Map.Entry entry = (Map.Entry) kv;
            System.out.println(entry.getKey()+"-"+entry.getValue());
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值