java HashSet使用教程

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(831)   2023-03-28 11:29:14

一.Java HashSet介绍

Hasset

Java中的HashSet实现了Set接口,即它不允许重复。它由HashMap 内部支持,它基于散列原理工作。 
我们可以在HashSet中存储一个  值。其默认容量为16,负载系数为0.75,其中:

Load factor = Number of Stored Elements / capacity

Java HashSet是非同步的也就是说是非线程安全的。此外,无法保证保留元素的插入顺序。
在本教程中,我们将学习如何使用Java HashSet

二.HashSet实例化

我们可以使用以下构造函数之一创建Java HashSet

HashSet() // default capacity of 16 with a load factor of 0.75
HashSet(int initialCapacity)
HashSet(int initialCapacity, float loadFactor)
HashSet(Collection c)
这些构造函数中的每一个都非常直观。
让我们使用默认构造函数快速创建一个HashSet:
Set<Integer> set = new HashSet<>();

三.HashSet常用方法

现在让我们看一些可以帮助我们操作Java HashSet的方法:

1.add并返回Boolean值

如果不存在,它只是向给定集添加一个元素。如果元素已经存在,add()只返回false
System.out.println(set.add(1));  //true
System.out.println(set.add(2));  //true
System.out.println(set.add(3));  //true
System.out.println(set.add(1));  //false - as already present
  
//Note that the order of elements isn't guaranteed
System.out.println(set); //[1, 2, 3]

2. boolean contains(Object obj)

如果hashset中存在指定元素,contains()方法返回true  
System.out.println(set.contains(1)); //true
System.out.println(set.contains(4)); //false

3. boolean remove(Object obj):

顾名思义,它会删除元素obj(如果存在)并返回true。如果不存在这样的元素,它只返回false
System.out.println(set.remove(1)); //true
System.out.println(set.remove(4)); //false

4. boolean isEmpty()

它为空集返回true,否则返回false
System.out.println(set.isEmpty()); // false

5. int size()

它只返回给定集合中存在的元素数量

6. void clear()

clear()方法删除引用集中存在的所有值,从而使其成为空集。

三.HashSet内部实现

HashSet的内部使用一个HashMap中存储它的元素。存储在HashSet中的元素被映射为HashMap中的键。所有这些条目的值字段包含一个常量PRESENT:
private static final Object PRESENT = new Object();
这是一个虚拟对象
 

迭代HashSet

我们可以使用以下方法之一迭代HashSet中的元素:

1. forEach()

从Java 8开始,我们可以使用forEach()迭代任何Java Collection:
set.forEach(e -> System.out.println(e));

2. forEachRemaining()

Java 8还支持forEachRemaining()构造,以便与Collection上的任何迭代器一起使用:
Iterator<Integer> itr = set.iterator();
  
itr.forEachRemaining(e -> System.out.println(e));

3.使用迭代器迭代

如果我们使用的是Java 7或更低版​​本,我们可以简单地使用迭代器进行迭代:
Iterator<Integer> itr = set.iterator();
  
while(itr.hasNext()) {
    System.out.println(itr.next());
}

4.扩展循环

我们还可以使用扩展的for循环来遍历元素
for(Integer e : set) {
    System.out.println(e);
}

四.总结

在本教程中,我们学习了如何创建和使用Java HashSet。我们也知道Java HashSet内部使用HashMap来实现它。




 
标签: HashSet
地址:https://www.leftso.com/article/578.html

相关阅读

java HashSet使用教程,HashSet常见的内置方法使用,HashSet 排序/迭代循环
线程安全是像Java这样的语言/平台中的类的重要质量,我们经常在线程之间共享对象。由于缺乏线程安全性而导致的问题非常难以调试,因为它们零星且几乎不可能有意再现。你如何测试你的对象以确保它们是线程...
以前我们看过工厂和抽象工厂模式。这些模式可以达到其目的,并且可以非常有用,但是有一些用例我们必须创建一个非常复杂的对象,并且创建它需要不同的步骤,每个步骤都需要不同的操作。在这种情况下,构建器模...
ArrayList去除重复对象元素及list对象根据制定字段值排序
Spring Boot 基于角色的安全控制使用JAX-RS的注解,spring boot,Jersey
前言继续上一篇Spring Boot Redis 秒杀实现 的一个修改版本,主要实现用ab工具进行网页正式访问的一个版本,其主要目的还是介绍Redis实现秒杀活动的一种方式
一名3年工作经验的java程序员应该具备的技能