Java常用类(HashSet)

2

Java常用类(HashSet)

  今天给小伙伴们介绍HashSet类,HashSet是Java专门用于处理哈希表的类,和C++或者Python中的set相同。其特点是不允许存储重复元素,无序,无法索引,因此无法使用普通的for循环,查询速度特别快。在Java中也内置了许多常用的算法,在刷题时常常使用它。

HashSet类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package demo01;

import java.util.HashSet;

public class HashSetClass {

public static void print(HashSet<Integer> h) {
for (int i: h) {
System.out.print(i + " ");
}
System.out.println();
}

public static void main(String[] args) {
//注意:如果想用HashSet存储自定义类型,需要重写对象中的hashCode方法和equals方法。
//因为HashSet的存储过程是先比较HashCode是否已经存在,如果没有存在则可以将元素加入,否则发生了哈希冲突,即多个不同的元素具有相同的HashCode,这样将这些元素和要加入的元素进行equals比较,如果不相同,则可以加入,否则不能将元素加入。
//还可以创建LinkedHashSet类型,和HashSet几乎相同,但是LinkedHashSet底层是一个链表和一个哈希表,链表的作用是记录元素第一次出现的位置,因此元素是有序的。
HashSet<Integer> h = new HashSet<>();
//boolean addAll(Collection<? extends E> c) 将集合中的元素添加到哈希表中
//public boolean add(E e) 向哈希表中添加元素,因为无序,所以没有public void add(int index, E element)方法。
h.add(10);
h.add(20);

System.out.print("初始时哈希表h:");
print(h);

//public int size() 查看哈希表的大小
System.out.println("哈希表h的大小为:" + h.size());

h.add(10);
h.add(30);
System.out.print("添加10和30两个元素时哈希表h:");
System.out.println(h);

//public boolean contains(Object o) 查看哈希表中是否存在元素
System.out.println("哈希表h是否包含元素20:" + h.contains(20));
System.out.println("哈希表h是否包含元素40:" + h.contains(40));

//public Object[] toArray() 将哈希表元素转换为数组
Object[] array = h.toArray();
System.out.print("将哈希表转换为普通数组array:");
for (Object i: array) {
System.out.print(i + " ");
}
System.out.println();

//public boolean remove(Object o) 从哈希表中移除指定元素
h.remove(20);
System.out.print("移除20,哈希表h:");
System.out.println(h);

//public void clear() 清空哈希表
h.clear();
System.out.print("移除所有元素后,哈希表h:");
System.out.println(h);

//public boolean isEmpty() 判断哈希表是否为空
System.out.println("哈希表h是否为空:" + h.isEmpty());
System.out.println("哈希表h的大小为:" + h.size());
}
}

1

Java小结

  哈希表没有getFirst和getLast方法,也无法通过索引进行遍历。使用哈希表时,只要记住4个重要的函数即可,add,remove,size,foreach(增强for)。常常在BFS或者DFS或者数组中出现,如搜索时,该点已经搜索完成,则可以将其加入哈希表,下次查到该点时则可以不再进行查找,节约大量的时间,因此小伙伴们一定要掌握它。

-------------本文结束感谢您的阅读-------------
0%