目录
知识点总结
集合(set)是一个用于存储和处理无重复元素的高级数据结构。
映射表(map)类似于目录,提供了使用键值快速查询和获取值的功能。
集合
我们通常使用集合的三个具体类HashSet、LinkedHashList、TreeSet来创建集合。
HashSet
HashSet类是一个实现了Set接口的具体类,可以使用HashSet的无参构造方法来创建空的散列表(hash set),也可以由一个现有的合集创建散列表。默认情况下,初始容量为16而负载系数是0.75。
我们先来介负载系数这个概念。
负载系数:在增加集合的容量之前,负载系数测量该集合允许多满。当元素个数超过了容量与负载系数的乘积,容量就会自动翻倍。
例如:如果容量是16,而负载系数是0.75,那么当集合的长度达到12(16 * 0.75 = 12)时,容量将会翻倍到32。比较高的负载系数会降低空间开销,但是会增加查找时间。通常情况下,默认的负载系数是0.75,该默认值是在时间开销和空间开销上一个很好的权衡。我们将在后续的文章中更加深入地讨论负载系数。
下面我们通过两个小例子来理解HashSet。
import java.util.HashSet;
import java.util.Set;
/**
* @author magpieeeee
* @Date 2022/3/13 21:59
* @description:
*/
public class Do_01_TestHashSet {
public static void main(String[] args) {
// 创建一个 set
Set<String> set = new HashSet<>();
// 像set中添加元素
set.add("Beijing");
set.add("Lichuan");
set.add("Lichuan");
set.add("Nanjing");
set.add("Shanghai");
set.add("Shenzhen");
System.out.println(set);
for(String temp : set) System.out.print(temp + " ");
}
}
输出结果为:
该程序将多个字符串添加到集合中(15~20行)。其中我们发现Lichuan被添加多次,但是只有一个被存储,正如开头所说,集合(set)是一个用于存储和处理无重复元素的高级数据结构。
另外,如输出所示,字符串没有按照我们输入的顺序存储,因为散列集中的元素是没有特定的顺序的。要强加给散列集一个顺序,就需要使用LinkedHashSet类,这个类,我们将在下一篇中详细讨论。