前言

本文为本小白🤯学习数据结构的笔记,将以算法题为导向,向大家更清晰的介绍数据结构相关知识(算法题都出自🙌B站马士兵教育——左老师的课程,讲的很好,对于想入门刷题的人很有帮助👍)

一、哈希表(Hash Table)

1. 基本概念
哈希表是一种通过 哈希函数(Hash Function) 将键(Key)映射到数组索引的数据结构。所以其中存储的元素是无序的,理想情况下,查找、插入、删除操作的时间复杂度为 O(1)

哈希表再使用层面上可以理解为一种集合结构,如果只有key,没有伴随数据value,可以使用HashSet结构,如果既有key,又有伴随数据value,可以使用HashMap结构。

1. HashMap —— 哈希表的键值对实现

HashMap 是 Map 接口的一个实现类,用于存储 键值对(Key-Value pairs)。

常用方法:

HashMap<String, Integer> map = new HashMap<>();
map.put("Alice", 25);
map.put("Bob", 30);
Integer age = map.get("Alice"); // 返回 25
map.containsKey("Bob"); // true
map.remove("Bob");//删除键值

2. HashSet —— 哈希表的集合实现

HashSet 是 Set 接口的一个实现类,用于存储 不重复的元素集合。

常用方法:

HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 重复元素,不会添加
boolean contains = set.contains("Apple"); // true
set.remove("Banana");

适用场景:
需要去重的集合,如统计唯一用户、过滤重复数据等。

3.HashMap和HashSet的区别

HashSet是HashMap为底层实现的,有无伴随数据,是HashMap和HashSet唯一的区别,底层实际是一回事。

二、有序表

有序表再使用层面上可以理解为一种集合结构,它和哈希表的区别是,有序表把key按照顺序组织起来,而哈希表完全不组织。

TreeMap 和 TreeSet 的区别,与 HashMap 和 HashSet 的关系类似,如果只有key,没有伴随数据value,可以使用TreeSet结构,如果既有key,又有伴随数据value,可以使用TreeMap结构。而且TreeSet 也是基于 TreeMap 实现的。

1.有序表的固定操作

在这里插入图片描述
以上所有操作时间复杂度都是O(logN)

//有序表常用操作
TreeMap<Interger,String> treeMap1 = new TreeMap<>();
treeMap1.put(1,"hhhhh");
treeMap1.put(2,"xxxxx");
System.out.println(treeMap1.containsKey(5));//false
System.out.println(treeMap1.get(1));
treeMap1.remove(1);
System.out.println(treeMap1.get(1)+",删了就没有了");

上面的例子都是用有序表存储基础类型,但如果存的不是基础类型,就必须要提供比较器,来保证有序

public static class NodeComparator implements Comparator<Node> {
   public int compara(Node o1,Node o2) {
      return o1.value - o2.value;
   }
}
nodeA = new Node(5);
nodeB = new Node(6);
nodeC = new Node(7);

TreeSet<Node> treeSet = new TreeSet<>(new NodeComparator());
treeSet.add(nodeA);

小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)

…。。。。。。。。。。。…请添加图片描述

…。。。。。。。。。。。…

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐