Java HashSet
Java HashSet类用于创建使用哈希表进行存储的集合。它继承了AbstractSet类并实现Set接口。
关于Java HashSet类的要点是:
HashSet使用称为 hashing"的机制存储元素。
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类的构造函数
构造函数 |
说明 |
HashSet() |
它用于构造默认的HashSet。 |
HashSet(int capacity) |
用于将散列集的容量初始化为给定的整数值容量。随着元素添加到HashSet中,容量会自动增长。 |
HashSet(int capacity, float loadFactor) |
用于将哈希集的容量初始化为给定的整数值容量和指定的负载系数。 |
HashSet(Collection
c) |
它用于通过使用集合c的元素来初始化哈希集。 |
Java HashSet类的方法
Java HashSet类的各种方法如下:
Java HashSet示例
我们来看一个简单的HashSet示例。注意,元素在无序集合中进行迭代。
import java.util.*;
class HashSet1{
public static void main(String args[]){
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());
}
}
}
忽略重复元素的Java HashSet示例
在此示例中,我们看到HashSet不允许重复元素。
import java.util.*;
class HashSet2{
public static void main(String args[]){
HashSet<String> set=new HashSet<String>();
set.add("Ravi");
set.add("Vijay");
set.add("Ravi");
set.add("Ajay");
Iterator<String> itr=set.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
用于删除元素的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);
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);
HashSet set.removeAll(set1);
System.out.println("After invoking removeAll() method: "+set);
set.removeIf(str->str.contains("Vijay"));
System.out.println("After invoking removeIf() method: "+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: []
另一个集合中的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());
}
}
}
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>();
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);
HashSet set.add(b1);
set.add(b2);
set.add(b3);
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