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语言数据结构哈希表详解 什么是哈希表? 哈希表(Hash Table)是一种采用散列函数(hash函数)将数据映射到一个固定长度的数组中,并且以 O(1) 的时间复杂度进行数据插入、查找、删除操作的数据结构。哈希表主要由以下三个组成部分构成:- 数组:用于存储映射到对应下标上的数据。- 散列函数:将数据映射到数组下标上的规则。- 冲突处理方式:当不同的数据…

    数据结构 2023年5月16日
    00
  • nginx内存池源码解析

    Nginx内存池源码解析 Nginx是一个高性能、高并发的Web服务器。为了提高其性能和速度,Nginx采用了特殊的内存管理机制,即内存池。 什么是内存池? 内存池是一种高效的内存分配和管理机制。它将一块内存划分成多个大小相等的块,并按需分配给系统。当内存块不再使用时,它并不被立即释放,而是留在内存池中待重复利用。 Nginx内存池结构 Nginx内存池主要…

    数据结构 2023年5月17日
    00
  • C语言数据结构 快速排序实例详解

    C语言数据结构 快速排序实例详解 什么是快速排序? 快速排序(Quicksort)是一种采用分治法(Divide and Conquer)的排序算法,通过将一个大问题逐步分解为小问题来解决的一种工具。 快速排序是一个比较快的排序算法,在平均状况下,排序n个项目要 O(n log n) 次比较,最坏情况下需要O(n^2)次比较,但这种状况并不常见。 快速排序算…

    数据结构 2023年5月17日
    00
  • MySQL底层数据结构选用B+树的原因

    MySQL底层数据结构选用B+树的原因主要是因为B+树具有以下优点: 能够快速查找B+树的查找速度非常快,时间复杂度为O(log n),在海量数据的环境中,能够快速定位目标数据。因为B+树每次查找只需要遍历树高度的次数,即使数据量很大,树的高度也很小。 能够高效地进行增删改操作B+树的平衡性能够保证树的高度非常小,大部分操作只需要遍历树的高度,而不是整颗树,…

    数据结构 2023年5月17日
    00
  • Codeforces Round 871 (Div. 4)

    A.Love Story 题意: 给定n个长度为10的字符串,问其与codeforces字符串的对应下标字母不同的个数。 分析: 对于每个字符串从前往后依次和“codeforces”对应字符比较然后统计不同字母数即可 code: #include <bits/stdc++.h> using namespace std; int main() { …

    算法与数据结构 2023年5月8日
    00
  • C利用语言实现数据结构之队列

    C语言实现队列的完整攻略 什么是队列 队列是一种线性数据结构,它有两个端点:队头和队尾。新的元素插入到队尾,每次从队头取出一个元素。这就类似于人们排队买票,新的买票者排在队尾,每当售票员完成一笔交易,队列头的买票者出队。 基本操作 队列主要有以下3个基本操作: 入队(enqueue):将一个元素添加到队列的尾部 出队(dequeue):从队列的头部移除一个元…

    数据结构 2023年5月17日
    00
  • JS中的算法与数据结构之链表(Linked-list)实例详解

    JS中的算法与数据结构之链表(Linked-list)实例详解 什么是链表? 链表是计算机科学中的一种数据结构,由一系列结点(Link,也称为节点)组成,并通过每个节点中的指针(Pointer)链接在一起。每个节点包含数据和一个指向某个位置的引用。 链表的主要特点是在插入和删除操作中表现出很高的效率。与数组相比,链表的访问和操作速度较慢,但在处理动态结构数据…

    数据结构 2023年5月17日
    00
  • C语言线性表全面梳理操作方法

    C语言线性表全面梳理操作方法 线性表概述 线性表是一种常用的数据结构,是指数据元素之间存在一定逻辑顺序,每个元素都有唯一的前驱和后继。 线性表有两种存储方式: 顺序存储结构 和 链式存储结构。 顺序存储结构 顺序存储结构是指采用顺序存储方式存储线性表,即将线性表的元素依次存储在一段连续的存储空间内。 代码示例:创建顺序存储线性表 #define MaxSiz…

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