当前位置: 首页 > article >正文

深入理解Java Map集合

一、HashMap集合

1.HashMap示意图

2.HashMap的特点

3.HashMap的常用方法

①.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中

②.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。

③. size()  返回Map集合中数据数量,准确说是返回key-value的组数。

④:clear() 清空Map集合

⑤:isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false

⑥:remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。

⑦:containsKey(Object key) Hashmap判断是否含有key

⑧:containsValue(Object value) Hashmap判断是否含有value:

⑨:Hashmap添加另一个同一类型的map下的所有数据

public class Test {
    public static void main(String[] args) {
        HashMap<String, Integer> map=new HashMap<>();
        HashMap<String, Integer> map1=new HashMap<>();
        /*void*///将同一类型的map添加到另一个map中
        map1.put("DEMO1", 1);
        map.put("DEMO2", 2);
        System.out.println(map);//{DEMO2=2}
        map.putAll(map1);
        System.out.println(map);//{DEMO1=1, DEMO2=2}
    }
}

⑩:Hashmap替换这个key的value

public class Test {
    public static void main(String[] args) {
        HashMap<String, Integer> map=new HashMap<>();
        /*value*///判断map中是否存在这个key
        map.put("DEMO1", 1);
        map.put("DEMO2", 2);
        System.out.println(map);//{DEMO1=1, DEMO2=2}
        System.out.println(map.replace("DEMO2", 1));//2
        System.out.println(map);//{DEMO1=1, DEMO2=1}
    }
}

二、TreeMap集合

1.TreeMap的特点

2.TreeMap基本使用

TreeMap中的元素默认按照keys的自然排序排列。

①:使用无参构造器创建对象

对Integer来说,其自然排序就是数字的升序;对String来说,其自然排序就是按照字母表排序。

public static void main(String[] args) {
    Map<String, Integer> map = new TreeMap<>();
    map.put("orange", 1);
    map.put("apple", 2);
    map.put("pear", 3);
    System.out.println(map);
}

②:Comparable接口

使用TreeMap时,放入的Key必须实现Comparable接口。String、Integer这些类已经实现了Comparable接口,因此可以直接作为Key使用。作为Value的对象则没有任何要求。

如果作为Key的class没有实现Comparable接口,那么,必须在创建TreeMap时同时指定一个自定义排序算法:

public class Main {
    public static void main(String[] args) {
        Map<Person, Integer> map = new TreeMap<>(new Comparator<Person>() {
            public int compare(Person p1, Person p2) {
                return p1.name.compareTo(p2.name);
            }
        });
        map.put(new Person("Tom"), 1);
        map.put(new Person("Bob"), 2);
        map.put(new Person("Lily"), 3);
        for (Person key : map.keySet()) {
            System.out.println(key);
        }
        // {Person: Bob}, {Person: Lily}, {Person: Tom}
        System.out.println(map.get(new Person("Bob"))); // 2
    }
}

class Person {
    public String name;
    Person(String name) {
        this.name = name;
    }
    public String toString() {
        return "{Person: " + name + "}";
    }
}


http://www.kler.cn/a/464173.html

相关文章:

  • 049_小驰私房菜_MTK Camera debug,通过adb 命令读写Camera sensor寄存器地址的值
  • Megatron - LM 怎么进行模型切分的,怎么匹配服务器的
  • 双指针算法详解
  • K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署、常用命令
  • Yocto项目 - 详解PACKAGECONFIG机制
  • docker 安装influxdb
  • 逻辑回归(Logistic Regression)深度解析
  • 在Swagger(现称为OpenAPI)中各类@api之间的区别
  • k8s系列--docker拉取镜像导入k8s的containerd中
  • HTML——56.表单发送
  • 从零开始学桶排序:Java 示例与优化建议
  • 2025.01.02 一月 | 充分地接受生活本身
  • python中常用的内置函数介绍
  • Java开发工具-Jar命令
  • 面试经典问题 —— 链表之返回倒数第k个节点(经典的双指针问题)
  • RK3568适配美格(MEIG-SLM3XX)4G模块
  • JavaWeb开发(五)Servlet-ServletContext
  • 大数据-266 实时数仓 - Canal 对接 Kafka 客户端测试
  • 数字图像总复习
  • ubuntu切换到root用户
  • 【C++动态规划】2088. 统计农场中肥沃金字塔的数目|2104
  • C++11右值与列表初始化
  • Redis数据库主要数据结构类型
  • 【HarmonyOS之旅】ArkTS语法(四) -> 使用限制与扩展
  • 使用爬虫技术获取网页中的半结构化数据
  • 算法-判断一个数是不是3的次幂