Java数据结构之HashMap和HashSet

Java数据结构之HashMap和HashSet

HashMap

介绍

HashMap是一种基于哈希表实现的Map集合,它提供了快速的插入、查询、删除操作。HashMap中存储的元素是以键值对(Key-Value)的形式存储的,其中Key是用来从Map中查找值的索引,Value是存储在Map中的值。HashMap中的Key和Value都可以为null,但是在使用时需要注意它们的影响。

用法

创建HashMap对象

Map<String, Integer> map = new HashMap<>();

插入元素

map.put("one", 1);
map.put("two", 2);
map.put("three", 3);

获取元素

int value = map.get("two"); // value = 2

删除元素

map.remove("one");

遍历元素

for (Map.Entry<String, Integer> entry : map.entrySet()) {
    String key = entry.getKey();
    int value = entry.getValue();
    System.out.println(key + ": " + value);
}

示例

示例1:计算字符串中每个字符出现的次数

String str = "Hello World";
Map<Character, Integer> map = new HashMap<>();

for (char ch : str.toCharArray()) {
    if (map.containsKey(ch)) {
        map.put(ch, map.get(ch) + 1);
    } else {
        map.put(ch, 1);
    }
}

for (Map.Entry<Character, Integer> entry : map.entrySet()) {
    char key = entry.getKey();
    int value = entry.getValue();
    System.out.println(key + ": " + value);
}

示例2:查找数组中是否有重复元素

int[] nums = {1, 2, 3, 4, 5, 2};
Map<Integer, Integer> map = new HashMap<>();

for (int num : nums) {
    if (map.containsKey(num)) {
        System.out.println("数组中有重复元素:" + num);
        break;
    } else {
        map.put(num, 1);
    }
}

HashSet

介绍

HashSet是一种基于哈希表实现的Set集合,它同样提供了快速的插入、查询、删除操作。HashSet中存储的元素是无序的,不重复的,没有索引。HashSet中的元素可以为null,但是在使用时需要注意它的影响。

用法

创建HashSet对象

Set<String> set = new HashSet<>();

插入元素

set.add("one");
set.add("two");
set.add("three");

删除元素

set.remove("one");

遍历元素

for (String str : set) {
    System.out.println(str);
}

示例

示例1:计算字符串中不重复字符的个数

String str = "Hello World";
Set<Character> set = new HashSet<>();

for (char ch : str.toCharArray()) {
    set.add(ch);
}

System.out.println("不重复字符的个数是:" + set.size());

示例2:求两个数组的交集

int[] nums1 = {1, 2, 3, 4, 5};
int[] nums2 = {3, 4, 5, 6, 7};
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();

for (int num : nums1) {
    set1.add(num);
}

for (int num : nums2) {
    set2.add(num);
}

set1.retainAll(set2);

System.out.println("两个数组的交集是:" + set1);

以上就是关于Java数据结构之HashMap和HashSet的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java数据结构之HashMap和HashSet - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • C++高级数据结构之优先队列

    C++高级数据结构之优先队列 什么是优先队列? 优先队列是一种特殊的队列,其中每个元素都有一个优先级。当加入一个元素时,它会被放置在队列中的适当位置,以确保优先级最高的元素位于队头。从队列中取出元素时,总是从队头删除元素。 优先队列的应用 优先队列的常见应用场景包括: 操作系统任务调度 网络传输协议TCP中的拥塞控制算法 各种图像算法如边缘检测等 C++中S…

    数据结构 2023年5月17日
    00
  • Java数据结构之栈与队列实例详解

    Java数据结构之栈与队列实例详解攻略 简介 栈和队列是常见的数据结构,在Java中也有对应的实现方式。本文将介绍栈和队列的概念、常见实现方式、应用场景和两个示例。 栈 概念 栈是一种具有后进先出(Last In First Out)特性的数据结构。栈可以使用数组或链表实现。 常见实现方式 基于数组的栈实现 使用数组作为底层存储结构实现栈时,需要注意栈顶指针…

    数据结构 2023年5月17日
    00
  • C++20中的结构化绑定类型示例详解

    ” C++20中的结构化绑定类型示例详解 ” 具体攻略如下: 什么是结构化绑定类型? 结构化绑定类型是C++17中的新特性,它可以让我们将一个复杂类型的元素绑定到某个变量上,从而更方便地使用这些元素。 C++20还进一步扩展了结构化绑定类型的功能,可以通过给用于引用的名字声明类型来进行显式类型的绑定。 结构化绑定类型的基本用法 下面的例子展示了如何使用结构化…

    数据结构 2023年5月17日
    00
  • Raft协议及伪码解析

    目录 节点的状态转换 follower candidate leader 伪码部分 节点初始化(Initialazation) 选举时其他节点的视角 回到candidate选举时的视角 消息如何广播复制 重要的反复出现的ReplicateLog 节点收到了LogRequest 节点如何追加log,Appendentries 再次回到leader, 如何处理L…

    算法与数据结构 2023年4月17日
    00
  • 【ACM算法竞赛日常训练】DAY16【奇♂妙拆分】【区区区间间间】【小AA的数列】数学 | 位运算 | 前缀和

    DAY16共3题: 奇♂妙拆分(简单数学) 区区区间间间(单调栈) 小AA的数列(位运算dp) ? 作者:Eriktse? 简介:19岁,211计算机在读,现役ACM银牌选手?力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)?? 阅读原文获得更好阅读体验:https://www.eriktse.com…

    算法与数据结构 2023年4月20日
    00
  • C语言实题讲解快速掌握单链表下

    C语言实题讲解快速掌握单链表下 简介 单链表是常见的一种数据结构,可以存储任意数量的数据,并且可以高效的进行插入、删除和查找操作。本篇文章将介绍如何使用C语言实现单链表,以及如何应对在实现单链表时所遇到的常见问题。 实现过程 数据结构设计 为了实现单链表,我们需要设计一个数据结构来存储节点信息,一般包含两个成员,一个是数据域,用来存储实际的数据,另一个是指针…

    数据结构 2023年5月17日
    00
  • C#数据结构与算法揭秘三 链表

    作为一本通俗易懂的C#数据结构与算法书籍,其第三章主要介绍链表(Linked List)的概念和基本操作。下面是链表的基本概念: 链表(Linked List)是一种动态数据结构,其中的元素按线性顺序排列,并且每个元素都称为一个结点(Node)。 每个结点都包含一个元素和一个指向下一个结点的指针(Pointer)。 相比于数组,链表的优势在于能够轻松地增加或…

    数据结构 2023年5月17日
    00
  • Java数据结构之链表的概念及结构

    Java数据结构之链表的概念及结构 链表的概念 链表是一种非顺序存储的容器,它由一个个结点组成,每个结点包含两部分,数据域和指针域。数据域是存储数据的部分,指针域是指向下一个结点的位置。 相比于数组,链表插入和删除操作的时间复杂度更低,但是访问元素时需要遍历整个链表,时间复杂度相对较高。 链表的结构 链表结构包含两个重要的部分:结点和链表。 结点(Node)…

    数据结构 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部