本文概述
- 列表和集合之间的区别
- Java HashSet类的构造方法
- Java HashSet类的方法
文章图片
Java HashSet类用于创建使用哈希表进行存储的集合。它继承了AbstractSet类并实现Set接口。
【Java HashSet】关于Java HashSet类的要点是:
- HashSet通过使用一种称为哈希的机制来存储元素。
- HashSet仅包含唯一元素。
- HashSet允许为空值。
- HashSet类不同步。
- HashSet不会保持插入顺序。在这里, 元素是根据其哈希码插入的。
- HashSet是搜索操作的最佳方法。
- HashSet的初始默认容量为16, 而负载系数为0.75。
HashSet类的层次结构
HashSet类扩展了实现Set接口的AbstractSet类。 Set接口以层次结构顺序继承Collection和Iterable接口。
HashSet类声明
让我们来看一下java.util.HashSet类的声明。
public class HashSet<
E>
extends AbstractSet<
E>
implements Set<
E>
, Cloneable, Serializable
Java HashSet类的构造方法
序号 | 建设者 | 描述 |
---|---|---|
1) | HashSet() | 它用于构造默认的HashSet。 |
2) | HashSet(int capacity) | 它用于将哈希集的容量初始化为给定的整数容量。随着将元素添加到HashSet中, 容量会自动增长。 |
3) | HashSet(int capacity, float loadFactor) | 它用于将哈希集的容量初始化为给定的整数容量和指定的负载因子。 |
4) | HashSet(Collection < ?扩展E> c) | 它用于通过使用集合c的元素来初始化哈希集。 |
序号 | 编辑并输入 | 方法 | 描述 |
---|---|---|---|
1) | boolean | add(E e) | 如果指定的元素尚不存在, 则用于将其添加到此集合中。 |
2) | void | clear() | 它用于删除集合中的所有元素。 |
3) | object | clone() | 它用于返回此HashSet实例的浅表副本:元素本身未克隆。 |
4) | boolean | contains(Object o) | 如果此集合包含指定的元素, 则用于返回true。 |
5) | boolean | isEmpty() | 如果此集合不包含任何元素, 则用于返回true。 |
6) | Iterator< E> | iterator() | 它用于返回此集合中元素的迭代器。 |
7) | boolean | remove(Object o) | 如果存在指定元素, 则用于从该集合中删除该元素。 |
8) | int | size() | 它用于返回集合中的元素数。 |
9) | Spliterator< E> | spliterator() | 它用于在集合中的元素上创建后绑定和故障快速的Spliterator。 |
让我们看一个简单的HashSet示例。注意, 元素在无序集合中进行迭代。
import java.util.*;
class HashSet1{
public static void main(String args[]){
//Creating HashSet and adding elements
HashSet<
String>
set=new HashSet();
set.add("One");
set.add("Two");
set.add("Three");
set.add("Four");
set.add("Five");
Iterator<
String>
i=set.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
}
}
Five
One
Four
Two
Three
Java HashSet示例忽略重复的元素
在此示例中, 我们看到HashSet不允许重复的元素。
import java.util.*;
class HashSet2{
public static void main(String args[]){
//Creating HashSet and adding elements
HashSet<
String>
set=new HashSet<
String>
();
set.add("Ravi");
set.add("Vijay");
set.add("Ravi");
set.add("Ajay");
//Traversing elements
Iterator<
String>
itr=set.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
Ajay
Vijay
Ravi
Java HashSet示例删除元素
在这里, 我们看到了删除元素的不同方法。
import java.util.*;
class HashSet3{
public static void main(String args[]){
HashSet<
String>
set=new HashSet<
String>
();
set.add("Ravi");
set.add("Vijay");
set.add("Arun");
set.add("Sumit");
System.out.println("An initial list of elements: "+set);
//Removing specific element from HashSet
set.remove("Ravi");
System.out.println("After invoking remove(object) method: "+set);
HashSet<
String>
set1=new HashSet<
String>
();
set1.add("Ajay");
set1.add("Gaurav");
set.addAll(set1);
System.out.println("Updated List: "+set);
//Removing all the new elements from HashSet
set.removeAll(set1);
System.out.println("After invoking removeAll() method: "+set);
//Removing elements on the basis of specified condition
set.removeIf(str->
str.contains("Vijay"));
System.out.println("After invoking removeIf() method: "+set);
//Removing all the elements available in the set
set.clear();
System.out.println("After invoking clear() method: "+set);
}
}
An initial list of elements: [Vijay, Ravi, Arun, Sumit]
After invoking remove(object) method: [Vijay, Arun, Sumit]
Updated List: [Vijay, Arun, Gaurav, Sumit, Ajay]
After invoking removeAll() method: [Vijay, Arun, Sumit]
After invoking removeIf() method: [Arun, Sumit]
After invoking clear() method: []
来自另一个Collection的Java HashSet
import java.util.*;
class HashSet4{
public static void main(String args[]){
ArrayList<
String>
list=new ArrayList<
String>
();
list.add("Ravi");
list.add("Vijay");
list.add("Ajay");
HashSet<
String>
set=new HashSet(list);
set.add("Gaurav");
Iterator<
String>
i=set.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
}
}
Vijay
Ravi
Gaurav
Ajay
Java HashSet示例:书
让我们看一个HashSet示例, 在该示例中我们要添加书籍以进行设置并打印所有书籍。
import java.util.*;
class Book {
int id;
String name, author, publisher;
int quantity;
public Book(int id, String name, String author, String publisher, int quantity) {
this.id = id;
this.name = name;
this.author = author;
this.publisher = publisher;
this.quantity = quantity;
}
}
public class HashSetExample {
public static void main(String[] args) {
HashSet<
Book>
set=new HashSet<
Book>
();
//Creating Books
Book b1=new Book(101, "Let us C", "Yashwant Kanetkar", "BPB", 8);
Book b2=new Book(102, "Data Communications &
Networking", "Forouzan", "Mc Graw Hill", 4);
Book b3=new Book(103, "Operating System", "Galvin", "Wiley", 6);
//Adding Books to HashSet
set.add(b1);
set.add(b2);
set.add(b3);
//Traversing HashSet
for(Book b:set){
System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity);
}
}
}
输出:
101 Let us C Yashwant Kanetkar BPB 8
102 Data Communications &
Networking Forouzan Mc Graw Hill 4
103 Operating System Galvin Wiley 6
你可能也会喜欢:
Java中HashSet的工作
推荐阅读
- Java Hashtable类
- Java HashMap类
- Java EnumSet类
- Java EnumMap类
- Java Deque接口
- Java Collections类
- Java ArrayList类
- 适用于PS4的12大最佳游戏键盘推荐合集(你最喜欢哪一款())
- 如何修复NVIDIA GeForce Experience错误代码0x0003(解决方法)