Day11-Java进阶-HashSet集合LinkedHashSet-Collection工具类Map集合

1. HashSet集合

HashSet-JDK8版本及以后-面试常问

2. LinkedHashSet-Collection工具类

2.1 LinkedHashSet

2.2 Collection工具类

3. Map集合

3.1 Map接口介绍

3.2 Map 集合的遍历方式

3.2.1 三种方式介绍

package com.itheima.map;

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

public class MapDemo3 {
    public static void main(String[] args) {
        HashMap<String, String> hm = new HashMap<>();
        hm.put("张三", "北京");
        hm.put("李四", "上海");
        hm.put("王五", "成都");

        hm.forEach((key, value) -> System.out.println(key + "---" + value));

        System.out.println("-----------------------------");

        hm.forEach((k,v) -> System.out.println(k + "---" + v));

    }

    private static void method2(HashMap<String, String> hm) {
        // 1. 获取到所有的键值对对象
        Set<Map.Entry<String, String>> entrySet = hm.entrySet();
        // 2. 遍历set集合获取每一个键值对对象
        for (Map.Entry<String, String> entry : entrySet) {
            // 3. 通过键值对对象, 获取键和值
            System.out.println(entry.getKey() + "---" + entry.getValue());
        }
    }

    private static void method1(HashMap<String, String> hm) {
        // 1. 获取到所有的键
        Set<String> keySet = hm.keySet();
        // 2. 遍历set集合, 获取每一个键
        for (String key : keySet) {
            // 3. 调用map集合的get方法, 根据键查找对应的值
            String value = hm.get(key);
            System.out.println(key + "---" + value);
        }
    }
}

3.2.2 Map 集合练习

package com.itheima.map;

import java.util.TreeMap;
import java.util.function.BiConsumer;

public class MapTest1 {
    public static void main(String[] args) {
        String info = "aababcabcdabcde";

        // 1. 准备Map集合, 用于记录每个字符出现次数
        TreeMap<Character, Integer> tm = new TreeMap<>();

        // 2. 拆分字符串, 便于得到每个字符
        char[] charArray = info.toCharArray();

        // 3. 遍历数组, 获取每个字符
        for (char c : charArray) {
            // 4. 判断当前字符, 在集合中是否存在
            if (!tm.containsKey(c)){
                tm.put(c, 1);
            }else {
                tm.put(c, tm.get(c) + 1);
            }
        }

        // 5. 准备StringBuilder
        StringBuilder sb = new StringBuilder();
        tm.forEach((key, value) -> sb.append(key).append("(").append(value).append(")"));

        System.out.println(sb);
    }

    private static void method() {
        String info = "ababc";

        // 1. 准备map集合, 用于统计字符的次数
        TreeMap<Character, Integer> tm = new TreeMap<>();

        // 2. 拆分字符串
        char[] charArray = info.toCharArray();

        // 3. 遍历字符数组, 获取每一个字符
        for (char c : charArray) {
            // 4. 判断当前字符在集合中是否存在
            if (!tm.containsKey(c)) {
                // 不存在: 说明是第一次出现
                tm.put(c, 1);
            } else {
                // 存在: 说明不是第一次出现, 获取旧值 + 1存回去
                tm.put(c, tm.get(c) + 1);
            }
        }

        // 5. 准备StringBuilder
        StringBuilder sb = new StringBuilder();
        tm.forEach((key, value) -> sb.append(key).append("(").append(value).append(")"));

        System.out.println(sb);
    }
}

package com.itheima.map;

import java.util.*;

public class MapTest2 {
    public static void main(String[] args) {
        HashMap<String, List<String>> hm = new HashMap<>();

        ArrayList<String> list1 = new ArrayList<>();
        Collections.addAll(list1, "南京市", "扬州市", "苏州市", "无锡市", "常州市");
        ArrayList<String> list2 = new ArrayList<>();
        Collections.addAll(list2, "武汉市", "孝感市", "十堰市", "宜昌市", "鄂州市");
        ArrayList<String> list3 = new ArrayList<>();
        Collections.addAll(list3, "成都市", "绵阳市", "自贡市", "攀枝花市", "泸州市");

        hm.put("江苏省", list1);
        hm.put("湖北省", list2);
        hm.put("四川省", list3);

        Set<Map.Entry<String, List<String>>> entrySet = hm.entrySet();

        for (Map.Entry<String, List<String>> entry : entrySet) {
            // 键: 省份
            String key = entry.getKey();
            System.out.print(key + "=");
            // 值: 多个市名
            List<String> list = entry.getValue();
            for (int i = 0; i < list.size() - 1; i++) {
                System.out.print(list.get(i)+", ");
            }
            System.out.println(list.get(list.size() - 1));
        }
    }

    private static void method() {
        HashMap<String, List<String>> hm = new HashMap<>();

        ArrayList<String> list1 = new ArrayList<>();
        Collections.addAll(list1, "南京市", "扬州市", "苏州市", "无锡市", "常州市");
        ArrayList<String> list2 = new ArrayList<>();
        Collections.addAll(list2, "武汉市", "孝感市", "十堰市", "宜昌市", "鄂州市");
        ArrayList<String> list3 = new ArrayList<>();
        Collections.addAll(list3, "成都市", "绵阳市", "自贡市", "攀枝花市", "泸州市");

        hm.put("江苏省", list1);
        hm.put("湖北省", list2);
        hm.put("四川省", list3);

        Set<Map.Entry<String, List<String>>> entrySet = hm.entrySet();

        for (Map.Entry<String, List<String>> entry : entrySet) {
            // 键: 省份名称
            String key = entry.getKey();
            System.out.print(key + "=");
            // 值: 多个市名
            List<String> list = entry.getValue();
            for (int i = 0; i < list.size() - 1; i++) {
                System.out.print(list.get(i) + ", ");
            }
            System.out.println(list.get(list.size() - 1));
        }
    }
}

注: 第一条红色字体为面试重点.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/567108.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++类和对象】日期类的实现

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

【MATLAB源码-第64期】matlab基于DWA算法的机器人局部路径规划包含动态障碍物和静态障碍物。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 动态窗口法&#xff08;Dynamic Window Approach&#xff0c;DWA&#xff09;是一种局部路径规划算法&#xff0c;常用于移动机器人的导航和避障。这种方法能够考虑机器人的动态约束&#xff0c;帮助机器人在复杂环境中安全、…

PCB上有哪些元素

过孔&#xff1a;是用来切换层的 丝印&#xff1a;就是标记&#xff08;白色的线或者符号&#xff09; 焊盘&#xff1a;焊接元器件&#xff0c;相当于线头&#xff0c;连接各个元件 通孔埋孔盲孔&#xff0c;都是用来换层&#xff0c;内部没有桐&#xff0c;是用来固定的 线路…

C++:基础语法

一、命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c; 以避免命名冲突或名字污染&#xff0c;n…

uniapp微信小程序(商城项目)

最近&#xff0c;闲来无事&#xff0c;打算学一下uniapp小程序 于是在跟着某站上学着做了一个小程序&#xff0c;主要是为了学uniapp和vue。某站黑马优购 完成的功能主要有&#xff1a;首页、搜索、分类和购物车。 有人问了为什么没有登录、和添加订单呢&#xff1f;问的很好…

2.4 Web容器配置:Tomcat

2.4 Web容器配置 2.4.1Tomcat配置1.常规配置2. HTTPS配置 *********** 2.4.1Tomcat配置 1.常规配置 在SpringBoot项目中&#xff0c;可以内置Tomcat、Jetly、Undertow、Netty等容器。 当开发者添加了spring-boot-starter-web依赖之后&#xff0c;默认会使用Tomcat作为Web容器…

【Linux学习】初始冯诺漫体系结构

文章目录 认识冯诺依曼系统 认识冯诺依曼系统 什么是冯诺依曼体系结构&#xff1f; 冯诺依曼体系结构是一种将程序指令和数据以二进制形式存放在主存储器中&#xff0c;由中央处理器统一控制和执行的计算机系统结构。冯诺依曼体系结构实现了程序的可编程性和硬件与软件的分离&…

【C语言】每日一题,快速提升(10)!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 题目&#xff1a;圣诞树 输入&#xff1a; 1输出&#xff1a; * * * * * **说明&#xff1a; 输入&#xff1a; 2输出&#xff1a; * * * * * * * …

【C++】一篇文章带你深入了解list

目录 一、list的介绍二、 标准库中的list类2.1 list的常见接口说明2.1.1 list对象的常见构造2.1.1.1 [无参构造函数](https://legacy.cplusplus.com/reference/list/list/list/)2.1.1.2 [有参构造函数(构造并初始化n个val)](https://legacy.cplusplus.com/reference/list/list/…

idea配置推荐插件详细讲解

配置插件是为了在开发过程中提高效率、改善开发体验而安装的。在IntelliJ IDEA中&#xff0c;你可以按照以下步骤配置插件&#xff1a; 打开插件配置页面&#xff1a; ● 在顶部菜单栏中选择 “File” -> “Settings”&#xff08;或者使用快捷键 Ctrl Alt S&#xff09;…

相亲平台app小程序

相亲平台app小程序是一种基于手机应用的微型程序&#xff0c;专为在线相亲交友活动设计。它提供了一系列的功能&#xff0c;旨在帮助用户更方便、更高效地找到心仪的伴侣。 首先&#xff0c;用户可以在个人资料部分上传照片、填写个人资料、设置兴趣爱好等信息&#xff0c;以便…

【行为型模型】迭代器模式

一、迭代器模式概述 迭代器模式定义&#xff1a;提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不暴露其内部的表示。把游走的任务放在送代器上&#xff0c;而不是聚合上。这样简化了聚含的接口和实现,也让责任各得其所。(对象行为型) 迭代器模式的优缺点&…

uni-app开发canvas绘图画画,记录每一步画的信息, 并实现后退功能

在uni-app中&#xff0c;要实现canvas绘图并记录每一步的信息以实现后退功能&#xff0c;你需要做几件事&#xff1a; 初始化Canvas上下文&#xff1a;首先&#xff0c;你需要在页面加载时初始化canvas上下文。 记录绘图步骤&#xff1a;在绘图过程中&#xff0c;你需要记录每…

20240416,深拷贝浅拷贝,对象初始化和清理,对象模型和THIS指针

哈哈哈乌龟越狱了 目录 2.5 深拷贝&浅拷贝 2.6 初始化列表 2.7 类对象作为类成员 2.8 静态成员 2.9 成员变量和成员函数分开存储 2.10 THIS指针的用途 2.11 空指针访问成员函数 2.12 COSNT修饰成员函数 2.5 深拷贝&浅拷贝 浅拷贝&#xff1a;简单的赋值拷贝…

揭秘分销系统:商业模式的新风向

大家好&#xff0c;我是微三云周丽&#xff0c;今天给大家分析当下市场比较火爆的商业模式&#xff01; 小编今天跟大伙们分享什么是分销系统&#xff1f; 在数字化浪潮席卷全球的今天&#xff0c;电子商务以其独特的优势&#xff0c;正在重塑商业世界的格局。其中&#xff0…

css设置输入框边框无效或者不展示边框

bug描述&#xff1a;在聚焦的时候&#xff0c;期望输入框的边框是主题色&#xff0c;但是不知道是个啥颜色。 发现输入框input以及textarea样式css标签:focus更改样式无效这个问题。 若希望实现input在触发焦点时更改样式&#xff0c;通常会想到使用:focus选择器&#xff0c;…

积极探索新质生产力,九河云携手华为云技术交流引领数智跃迁

4月18日&#xff0c;九河云携手华为云举办了华为云SA技术培训会议&#xff0c;培训邀请到华为云技术人员作为主讲人&#xff0c;通过理论讲解与案例结合的方式&#xff0c;围绕ECS和EBS之间的联动&#xff0c;调优和数据保护等方面展开&#xff0c;深入浅出地讲解了基于EBS部署…

uniapp 引用组件后 不起作用 无效果 不显示

根据uniapp官方文档easycom组件规范 只要组件安装在项目的components目录下或uni_modules目录下&#xff0c;并符合components/组件名称/组件名称.(vue|uvue)目录结构&#xff08;注意&#xff1a;当同时存在vue和uvue时&#xff0c;uni-app 项目优先使用 vue 文件&#xff0c;…

浅谈防火墙,IPS,APT威胁检测的互补性

在学习网络安全产品时发现很多产品的目的与功能大同小异都是防范非法流量或威胁&#xff0c;但是既然有产品的差异就有作用的目的的差异&#xff0c;下面浅谈一下三个网络安全产品的差异化与互补点 防火墙 传统防火墙主要是工作在二到四层&#xff0c;不会对报文的载荷进行检…

App Cleaner Uninstaller中文激活版:mac最强深度清理软件

App Cleaner & Uninstaller 是一款适用于 Mac 操作系统的软件应用程序&#xff0c;允许用户轻松卸载不需要的应用程序、删除剩余文件和文件夹以及管理启动项。该应用程序会分析与您要删除的应用程序关联的文件&#xff0c;并帮助识别其所有组件&#xff0c;以便您可以一次将…