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

Java—双列集合

双列集合

双列集合的特点:

双列集合一次需要存一对数据,分别为键和值

键不能重复,值可以重复

键和值是一一对应的,每一个键只能找到自己对应的值

键+值这个整体我们称之为“键值对”或者“键值对对象”,在Java中叫做"Entry对象"

双列集合的体系:

红色:接口 要创建其实现类的对象

蓝色:实现类

map常见的api

put方法代码实现和细节:

remove方法的代码

删除键返回值,如上后面的删除郭靖返回黄蓉

clear方法

清空里面的数据没有放回值

containsKey方法:键是否存在

boolean类型的存在返回true不存在返回false

containsValue方法:值是否存在

isempty方法:判断集合是否为空

size集合的长度:

Map的遍历方式

方法一:Map的遍历方式(键找值)

方式二:Map的遍历方式(键值对)

//getKey()获取键,getValue()获取值

方法三:Map的遍历方式(Lambda表达式)

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

public class text2 {
    public static void main(String[] args) {

        Map<String,String> map=new HashMap<>();
        map.put("A","61");
        map.put("B","62");
        map.put("C","63");
        map.put("D","64");
        Set<Map.Entry<String, String>> entries = map.entrySet();
        //匿名内部类
       map.forEach(new BiConsumer<String, String>() {
           @Override
           public void accept(String key, String value) {
               System.out.println(key+"="+value);
           }
       });
       //lambda表达式
        map.forEach(( key, value) -> System.out.println(key+"="+value));

    }
}

HashMap

HashMap的特点

  • HashMap是Map里面的一个实现类。
  • 没有额外需要学习的特有方法,直接使用Map里面的方法就可以了。
  • 特点都是由键决定的:无序、不重复、无索引
  • HashMap跟HashSet底层原理是一模一样的,都是哈希表结构

HashMap的键位置如果存储的是自定义对象,需要重写hashCode和equals方法。

LinkedHashMap

由键决定:有序、不重复、无索引。

这里的有序指的是保证存储和取出的元素顺序一致

原理:底层数据结构是依然哈希表,只是每个键值对元素又额外的多了一个双链表的机制记录存储的顺序。

TreeMap

TreeMap跟TreeSet底层原理一样,都是红黑树结构的。

由键决定特性:不重复、无索引、可排序

可排序:对键进行排序。

注意:默认按照键的从小到大进行排序,也可以自己规定键的排序规则

代码书写两种排序规则:

实现Comparable接口,指定比较规则。

创建集合时传递Comparator比较器对象,指定比较规则。

import java.util.LinkedHashMap;
import java.util.TreeMap;

public class text4 {
    public static void main(String[] args) {
        TreeMap<Integer,String>tm=new TreeMap<>();
        tm.put(1,"a");
        tm.put(2,"b");
        tm.put(3,"c");
        tm.put(6,"d");
        tm.put(4,"d");
        tm.put(5,"e");
        System.out.println(tm);//
    }
}

打印结果:按键的升序进行排列

如果指定规则进行排序要

创建集合时传递Comparator比较器对象,指定比较规则。

import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.TreeMap;

public class text4 {
    public static void main(String[] args) {
        TreeMap<Integer,String>tm=new TreeMap<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                //01当前要添加的元素
                //02已经存在的元素
                return o2-o1;
            }
        });
        tm.put(1,"a");
        tm.put(2,"b");
        tm.put(3,"c");
        tm.put(6,"d");
        tm.put(4,"d");
        tm.put(5,"e");
        System.out.println(tm);//
    }
}


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

相关文章:

  • 树莓派pico入坑笔记,故障解决:请求 USB 设备描述符失败,故障码(43)
  • Hive之数据定义DDL
  • DeepSeek R1本地化部署 Ollama + Chatbox 打造最强 AI 工具
  • Unity学习笔记
  • 吴恩达深度学习——有效运作神经网络
  • 《手札·开源篇》从开源到商业化:中小企业的低成本数字化转型路径 ——以Odoo为数据中台低成本实现售前售中一体化
  • 用FormLinker实现自动调整数据格式,批量导入微软表单
  • 使用VCS对Verilog/System Verilog进行单步调试的步骤
  • 在VS Code中基于TypeScript使用Vue.js搭建Babylon.js的开发环境
  • C# 接口介绍
  • 基于Kamailio、MySQL、Redis、Gin、Vue.js的微服务架构
  • 如何让DeepSeek恢复联网功能?解决(由于技术原因,联网搜索暂不可用)
  • 第 2 天:创建你的第一个 UE5 C++ 项目!
  • 鸿蒙HarmonyOS Next 视频边播放边缓存- OhosVideoCache
  • 从一到无穷大 #43:Presto History Based Optimizer,基于PlanNode粒度统计的查询计划选择策略
  • 北京钟鼓楼:立春“鞭春牛”,钟鼓迎春来
  • 申博经验贴
  • 深入解析 clone():高效的进程与线程创建方法(中英双语)
  • c++:list
  • 在 Ubuntu 上安装 Node.js 23.x
  • 调用百度翻译API翻译日语srt字幕
  • MATLAB实现单层竞争神经网络数据分类
  • 95,【3】 buuctf web [安洵杯 2019]easy_web
  • DeepSeek推动大语言模型发展进入新阶段
  • Turing Complete-1位开关
  • 2022 年 6 月大学英语四级考试真题(第 3 套)——纯享题目版