java基础之Map

1.Map存储的是一个键值对(key-value)

2.在sesson、redis 、json 、HBase 中都有用到键值对。

3.Map的子类:

  • HashMap:数组+链表(1.7)数组+链表+红黑树(1.8)   //Key:无序,唯一 ;Value:无序,不唯一
  • LinkedHashMap:链表    //有序的HashMap   可以按照插入顺序访问。
  • TreeMap:红黑树  有序 //速度没有HashMap快

4.Set和Map的关系:采用了相同的数据结构——HashMap,Set只用HashMap中的Key存储数据 。

5.Map.Entry表示的是K-V组合的一组映射关系,key和value成组出现 。

6.HashMap允许key为null,value为null。

7.Map的一些常用方法:

1)put(k,v) :添加键值对。

2)clear() :清空map中的值。

3)remove(Object key, Object value):删除键值对。

4)isEmpty():Map是否为空。

5)size():map中键值对的数量。

6)containsKey(Object key):map中是否包含key值。

7)containsValue(Object value):map中是否包含value值。

8)get(Object key) :根据key值,返回value值。

8.遍历valus值得几种方法

1)通过map.entrySet()方法,获取Entry(键值对)的集合。然后通过遍历Entry(键值对)集合,获取key值和value值。

2)通过map.keySet()方法,获取key值的集合。然后通过遍历key值的集合,获取value值。

3)通过map.keySet()方法,获取key值的集合。然后获取集合的迭代器。通过迭代器遍历集合,获取value值。

4)通过map.values()方法,获取value值得集合。遍历集合,输出value的值。

public class MapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map=new HashMap<>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        map.put("d",4);

        //1
        System.out.println("第一种方式");
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for(Map.Entry<String, Integer> entry:entries){
            System.out.println(entry.getKey()+"-"+entry.getValue());
        }
        //2
        System.out.println("第二种方式");
        Set<String> keySets = map.keySet();
        for(String str:keySets){
            System.out.println(str+"-"+map.get(str));
        }
        //3
        System.out.println("第三种方式");
        Set<String> keySets2 = map.keySet();
        for(Iterator<String> iterator=keySets2.iterator();iterator.hasNext();){
            String key=iterator.next();
            System.out.println(key+"-"+map.get(key));
        }
        //4
        System.out.println("第四种方式");
        Collection<Integer> values = map.values();
        for(Integer value:values){
            System.out.println(value);
        }
    }
}
--------------------------------------------------------------
运行结果:
第一种方式
d-4
b-2
c-3
a-1
第二种方式
d-4
b-2
c-3
a-1
第三种方式
d-4
b-2
c-3
a-1
第四种方式
4
2
3
1

总结:

1.Map存储的是键值对,是key-value。

2.Map的子类:HashMap,TreeMap,LinkedHashMap,HashTable。

3.在jdk1.7中,hashMap的存储结构是数组+链表。

   在jdk1.8中,hashMap的存储结构是数组+链表+红黑树。

4.TreeMap的存储结构是红黑树。

5.HashMap和HashTable的区别?

1)HashMap中的key值和value值,都可以为null。但是HashTable中key值和value值,都不可以为null。

2)HashTable:线程安全,效率比较低;HashMap:线程不安全,效率比较高

6.Map中的一些基本操作也是增删改查。

7.遍历HashMap中value值,可以通过map.entrySet(),map.keySet(),map.values()实现。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值