java day15 Map集合(HashMap、TreeMap)

1、Map集合

在这里插入图片描述

1.1 Map接口

  • Map接口特点:
  • 用于存储任意键值对(Key-Value)
  • 键:无下标、不可重复(唯一)
  • 值:无下标、可以重复
  • 常用方法:
方法名描述
V put(K key,V value)将对象存入到集合中,关联键值。key重复则覆盖原值。
Object get(Object key)根据键获取对应的值。
Set keySet()返回所有key。
Collection values()返回包含所有值的Collection集合。
Set<Map.Entry<K,V>> entrySet()键值匹配的Set集合。

代码示例:

1.2 Map实现类

1.2.1 HashMap
  • Map:键值对形式存储对象,当key相等的时候,value会覆盖
  • key-value:key唯一,value可以重复
  • HashMap:key是无序不可以重复的

代码示例:

package Day15_map.hashmap;

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

/**
 * @author wzy
 * @version 1.0
 * @date 0004 2020-12-04 10:33
 *
 * Map:键值对形式存储对象,当key相等的时候,value会覆盖
 *      key-value:key唯一,value可以重复
 *      HashMap:key是无序不可以重复的
 *
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        map.put("a",4);
        map.put("c",4);
        System.out.println(map);


        //先把map的key值放入set集合中
        Set<String> set = map.keySet();
        //迭代set集合
        Iterator<String> it = set.iterator();
        while (it.hasNext()){
            String key = it.next();
            //使用map的get()方法获取map的value值
            int value = map.get(key);
            System.out.println("key:"+key+", value:"+value);
        }

        System.out.println("----------------------");
        //把map中的映射关系存放在entry节点中,再把节点存在set集合里
        Set <Map.Entry<String,Integer>> set1 = map.entrySet();
        //迭代set集合
        //使用foreach循环,使用getKey获取键,使用getValue获取值
        for (Map.Entry entry:set1){
            System.out.println("key:"+entry.getKey()+", value:"+entry.getValue());

        }
        System.out.println("----------------------");
        //删除
        map.remove("a");
        //把map中的映射关系存放在entry节点中,再把节点存在set集合里
        Set <Map.Entry<String,Integer>> set2 = map.entrySet();
        //迭代set集合
        //使用foreach循环,使用getKey获取键,使用getValue获取值
        for (Map.Entry entry:set2){
            System.out.println("key:"+entry.getKey()+", value:"+entry.getValue());
        }

        System.out.println(" ---------------//修改");
        //修改key     --  先删后加
        map.remove("b");
        map.put("b",200);
        System.out.println(map);
        //修改value   --  直接添加,会覆盖
        System.out.println("---------------//修改value   --  直接添加,会覆盖");
        map.put("c",100);
        System.out.println(map);
    }
}

1.2.2 TreeMap
  • JDK1.2版本,线程不安全,运行效率快。
  • 允许用null 作为key或是value。
  • 存储结构:哈希表
package Day15_map.treemap;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

/**
 * @author wzy
 * @version 1.0
 * @date 0004 2020-12-04 11:20
 *
 * TreeMap:底层是红黑树
 *      存储映射关系时,key需要进行自然排序或者传递比较器
 *      当key相等时,value会被覆盖
 *      当比较规则compare()或者compareTo()返回0时,
 *      会执行t.setValue(value),会实现新的value值覆盖旧的value
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        TreeMap<String, Integer> map = new TreeMap<>();
        map.put("a",1);
        map.put("a",2);
        map.put("b",3);
        map.put("c",4);
        System.out.println(map);

        System.out.println("----------遍历");
        Set<String> set1 = map.keySet();
        Iterator<String> it = set1.iterator();
        while (it.hasNext()){
            String key = it.next();
            System.out.println("key:"+key+", value:"+map.get(key));
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值