数据结构08(Java)-- 哈希表(HashMap和HashSet)有序表(TreeMap和TreeSet)的简单介绍
前言
本文为本小白🤯学习数据结构的笔记,将以算法题为导向,向大家更清晰的介绍数据结构相关知识(算法题都出自🙌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);
小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)
…。。。。。。。。。。。…
…。。。。。。。。。。。…
更多推荐
所有评论(0)