Map概述、构造方法、遍历

package com.shujia.day15;

import java.util.HashMap;
import java.util.Map;

/*
    Map: 存储元素的特点是每一个元素是一个键值对{【name:"魏一民"】 , 【age:18】}

    Map集合的共同拥有的特点:
        1、Map集合中的元素,键是唯一的,不会在一个Map集合发现两个相同的键
            1001:魏一民
            1002:陈真
            1001:小虎
        2、Map集合中,值是可以发生重复的
            1001:魏一民
            1002:魏一民
        3、Map集合的唯一性,排序都是针对键来说的,值是跟着键走的

    Map(接口)
        - HashMap(底层数据结构是哈希表,元素要想保证唯一性的话,需要重写hashCode和equals方法)
              -LinkedHashMap继承自HashMap,是有序的,底层数据结构是哈希表和链表
        -TreeMap键是红黑树结构,可以保证键的排序和唯一性,用法和TreeSet一样


    Map接口中的成员方法:
        V put(K key,V value)                 向集合中添加键值对元素  返回的是被覆盖的键对应的那个值
        V remove(Object key)                 根据键删除一个键值对元素 返回被删除键值对的值
        void clear()                         清空集合
        boolean containsKey(Object key)      判断键是否存在
        boolean containsValue(Object value)  判断值是否存在
        boolean isEmpty()                    判断是否为空
        int size()                           获取集合中的键值对的个数



 */
public class MapDemo1 {
    public static void main(String[] args) {
        //创建一个Map对象
        Map<Integer, String> map1 = new HashMap<>();

        //V put(K key,V value) 向集合中添加键值对元素  返回的是被覆盖的键对应的那个值
        System.out.println(map1.put(1001, "魏一民"));
        System.out.println(map1.put(1002, "陈真"));
        System.out.println(map1.put(1003, "李建国"));
        System.out.println(map1.put(1001, "小虎")); // 会将上面1001键的值进行覆盖操作
        System.out.println(map1.put(1004, "陈旺"));

        System.out.println("map1: " + map1);
        System.out.println("-----------------------------------------------");
        //V remove(Object key) 根据键删除一个键值对元素 返回被删除键值对的值
//        System.out.println(map1.remove(1001));
//        System.out.println("map1: " + map1);
        System.out.println("-----------------------------------------------");
//        //void clear()
//        map1.clear();
//        System.out.println("map1: " + map1);
        System.out.println("-----------------------------------------------");
        //boolean containsKey(Object key) 判断键是否存在
        System.out.println(map1.containsKey(1001));
        System.out.println("-----------------------------------------------");
        //boolean containsValue(Object value) 判断值是否存在
        System.out.println(map1.containsValue("小虎3"));
        System.out.println("-----------------------------------------------");
        //boolean isEmpty()
        System.out.println(map1.isEmpty());
        System.out.println("-----------------------------------------------");
        //int size() 获取集合中的键值对的个数
        System.out.println(map1.size());


    }
}
package com.shujia.day15;

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

/*
    map集合的遍历
    遍历方式:
        方式1:先一次性获取所有的键,遍历键根据键找到值。
        方式2:可以拿到每一键值对组成的一个对象,遍历这个对象中的元素得到每一个键值对中的键和值。

 */
public class MapDemo2 {
    public static void main(String[] args) {
        //创建一个Map对象
        Map<Integer, String> map1 = new HashMap<>();

        //V put(K key,V value) 向集合中添加键值对元素  返回的是被覆盖的键对应的那个值
        System.out.println(map1.put(1001, "魏一民"));
        System.out.println(map1.put(1002, "陈真"));
        System.out.println(map1.put(1003, "李建国"));
        System.out.println(map1.put(1001, "小虎")); // 会将上面1001键的值进行覆盖操作
        System.out.println(map1.put(1004, "陈旺"));

        System.out.println("map1: " + map1);
        System.out.println("-----------------------------------------------");
        //方式1:先一次性获取所有的键,遍历键根据键找到值。
        //keySet() 获取map集合中所有的键,返回所有的键组成的一个Set集合
        Set<Integer> keys = map1.keySet();
        //遍历键集合,得到每一个键
        for (Integer key : keys) {
            //get() 根据键获取值
            String value = map1.get(key);
            System.out.println(key + "-" + value);
        }
        System.out.println("-----------------------------------------------");
        //方式2:可以拿到每一键值对组成的一个对象,遍历这个对象中的元素得到每一个键值对中的键和值。
        //entrySet() 获取每一个键值对,组成一个Set集合
        Set<Map.Entry<Integer, String>> entries = map1.entrySet();
        for (Map.Entry<Integer, String> entry : entries) {
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"-"+value);
        }
    }
}
posted @ 2024-08-13 23:21  ていせい  阅读(6)  评论(0编辑  收藏  举报