个性化阅读
专注于IT技术分析

Java HashSet

本文概述

Java HashSet类层次结构

Java HashSet类用于创建使用哈希表进行存储的集合。它继承了AbstractSet类并实现Set接口。

关于Java HashSet类的要点是:

  • HashSet通过使用一种称为哈希的机制来存储元素。
  • HashSet仅包含唯一元素。
  • HashSet允许为空值。
  • HashSet类不同步。
  • HashSet不会保持插入顺序。在这里, 元素是根据其哈希码插入的。
  • HashSet是搜索操作的最佳方法。
  • HashSet的初始默认容量为16, 而负载系数为0.75。

列表和集合之间的区别

列表可以包含重复元素, 而Set仅包含唯一元素。

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的元素来初始化哈希集。

Java HashSet类的方法

Java HashSet类的各种方法如下:

序号 编辑并输入 方法 描述
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。

Java HashSet示例

让我们看一个简单的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的工作

赞(0)
未经允许不得转载:srcmini » Java HashSet

评论 抢沙发

评论前必须登录!