Java哈希集示例
使用哈希表进行存储的集合通常由javahashset类创建。顾名思义,HashSet实现Set接口,它还使用HashMap实例的哈希表。HashSet中元素的顺序是随机的。此类允许null元素。在复杂性方面,HashSet为add、remove、contains和size等基本操作提供了恒定的时间性能,假设元素被函数正确地分散。
了解HashSet有什么重要的
HashSet使用一种称为 hashing的机制来存储元素
哈希集中不能存在重复元素。
哈希集允许空值。
哈希集类不是同步的。
哈希集的顺序不是由插入顺序维护的。元素(在这个类中)是基于它们的哈希代码插入的。
由于其搜索时间的复杂性,其哈希操作的最佳方法是时间常数。
HashSet的初始默认容量为16,加载因子为0.75.
HashSet结构
我们放入HashMap中的每个对象都首先通过哈希算法发送。这个算法的唯一目的是为我们传递给它的每个对象生成一个称为 散列的唯一数字。在上图中,该算法为字符串Lisa Morgan生成了3,为Bob Wiliams生成了2,为Jane Smith生成了1. 之后,这些数字作为索引存储在数组中。每当我们想对HashSet中的元素执行任何类型的操作时,都可以通过哈希算法生成的索引来寻址它们。这就是HashSet以随机顺序返回元素的原因,HashSet只知道HashSet的顺序。
HashSet中的构造函数
HashSet HashSet=new HashSet();
HashSet HashSet=新的HashSet(int initialCapacity);
hashfactor,hashint集(新的hashint-loadcapacity=hashint);
HashSet HashSet=new HashSet(集合C);
这些构造函数的主要区别是在# 1构造函数中,初始容量为16,默认负载系数为0.75,但在# 2中,我们可以实际设置容量。“载荷系数”的默认值仍为0.75. 在constructor# 3可以设置容量和负载系数。
HashSet类中的方法
boolean add(objecto):用于添加作为参数提供的元素,如果不存在,则返回false。
void clear():用于删除所有元素。
boolean contains(Object o):如果指定的对象在哈希集中,则返回true;否则返回false。
boolean remove(Object o):用于从哈希集中移除指定的对象(如果存在)。
Iterator Iterator():用于返回集合中元素的迭代器。
boolean isEmpty():用于检查哈希集是否为空。如果为空则返回true,否则返回false。
int size():返回集合的大小。
克隆:创建对象集的副本。
有关所有方法的文档,可以访问Oracle官方文档页。
使用add()在哈希集中添加元素
语法:哈希集.add(对象o);
import java.io.*;
import java.util.HashSet;
public class HashSetExample {
public static void main(String args[])
{
//Creating an empty HashSet
HashSet<String> animals = new HashSet<String>();
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
//Displaying the HashSet
System.out.println("HashSet: " + animals);
}
}
输出
HashSet: [Elephant, Tiger, Lion]
使用clear()清除哈希集
语法:哈希集.清除();
输出
import java.io.*;
import java.util.HashSet;
public class HashSetExample{
public static void main(String args[])
{
//Creating an empty HashSet
HashSet<String> animals = new HashSet<String>();
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
//Displaying the HashSet
System.out.println("HashSet: " + animals);
//Clearing the hash set
animals.clear();
//Displaying the final Set after clearing;
System.out.println("The final set: " + animals);
}
}
HashSet: [Elephant, Tiger, Lion] The final set: []
使用contains()检查HashSet中是否存在元素
语法:哈希_集合包含(对象o)
import java.io.*;
import java.util.HashSet;
public class HashSetExample {
public static void main(String args[])
{
//Creating an empty HashSet
HashSet<String> animals = new HashSet<String>();
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
//Displaying the HashSet
System.out.println("HashSet: " + animals);
//Checking for "Lion" in the hash set
System.out.println("Does the HashSet contain 'Lion'? " + animals.contains("Lion"));
//Checking for "Elephant" in the hash set
System.out.println("Does the HashSet contain 'Elephant'? " + animals.contains("Elephant"));
//Checking for "Tiger" in the hash set
System.out.println("Does the HashSet contain 'Tiger'? " + animals.contains("Tiger"));
//Checking for "Chicken" in the hash set
System.out.println("Does the HashSet contain 'Chicken'? " + animals.contains("Chicken"));
}
}
输出
HashSet: [Elephant, Tiger, Lion] Does the Set contain 'Lion'? true Does the Set contain 'Elephant? true Does the Set contain 'Tiger'? true Does the Set contain 'Chicken'? false
使用DeHashSet移除元素
语法:哈希集.删除(对象o)
import java.util.*;
import java.util.HashSet;
public class HashSetExample {
public static void main(String args[])
{
//Creating an empty HashSet
HashSet<String> animals = new HashSet<String>();
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
//Displaying the HashSet
System.out.println("HashSet: " + animals);
set.remove("Elephant");
set.remove("Lion");
//Displaying the HashSet after removal
System.out.println("HashSet after removing elements: " + animals);
}
}
输出
HashSet: [Elephant, Tiger, Lion] HashSet after removing elements: [Tiger]
Iterator()方法
语法:Iterator Iterator=哈希集.迭代器();
import java.util.*;
import java.util.HashSet;
public class HashSetExample {
public static void main(String args[])
{
//Creating an empty HashSet
HashSet<String> animals = new HashSet<String>();
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
//Displaying the HashSet
System.out.println("HashSet: " + animals);
//Creating an iterator
Iterator iterator = animals.iterator();
//Displaying the values after iterating through the set
System.out.println("The iterator values are: ");
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
**输出
**
HashSet: [Elephant, Tiger, Lion] The iterator values are: Elephant Tiger Lion
使用isEmpty()检查哈希集是否为空
语法:集HashEmpty();
import java.io.*;
import java.util.HashSet;
public class HashSetExample {
public static void main(String args[])
{
//Creating an empty HashSet
HashSet<String> animals = new HashSet<String>();
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
//Displaying the HashSet
System.out.println("HashSet: " + animals);
//Check for the empty set
System.out.println("Is the hash set empty: " + animals.isEmpty());
set.clear();
//Checking after we've cleared it out
System.out.println("Is the hash set empty: " + animals.isEmpty());
}
}
输出
HashSet: [Elephant, Tiger, Lion] Is the hash set empty: false Is the hash set empty: true
使用size()获取哈希集的大小
语法:HashSet.size();
import java.util.*;
import java.util.HashSet;
public class HashSetExample {
public static void main(String args[])
{
//Creating an empty HashSet
HashSet<String> animals = new HashSet<String>();
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
//Displaying the HashSet
System.out.println("HashSet: " + animals);
//Get the size of the hash set
System.out.println("The size of the hash set is: " + animals.size());
}
}
输出
HashSet: [Elephant, Tiger, Lion] The size of the hash set is: 3
使用clone()克隆哈希集
语法:哈希集.clone()
import java.io.*;
import java.util.HashSet;
public class HashSetExample {
public static void main(String args[])
{
//Creating an empty HashSet
HashSet<String> animals = new HashSet<String>();
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
System.out.println("HashSet: " + animals);
//Creating a new set
HashSet clonedSet = new HashSet();
//Cloning the set using clone() method
clonedSet = (HashSet)animals.clone();
//Displaying the new hashset;
System.out.println("The new set: " + clonedSet);
}
}
输出
HashSet: [Elephant, Tiger, Lion] The new set: [Elephant, Tiger, Lion]
如何遍历HashSet
有两种方法可以迭代HashSet:
使用迭代器
不使用迭代器
1)使用迭代器
import java.util.HashSet;
import java.util.Iterator;
class IterateHashSetExample{
public static void main(String[] args) {
HashSet<String> animals= new HashSet<String>();
//add elements to HashSet
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
Iterator<String> iterator = animals.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
上面的代码简单地“添加”了一个迭代器到动物散列集,然后只打印每个散列值,直到没有更多的迭代器为止。另请注意,此方法忽略重复项。如果有复制件的话,复制件只能打印一次。
输出
Elephant Tiger Lion
2)不使用迭代器
import java.util.HashSet;
import java.util.Set;
class IterateHashSetExample{
public static void main(String[] args) {
Set<String> animals = new HashSet<String>();
//add elements to HashSet
animals.add("Elephant");
animals.add("Tiger");
animals.add("Lion");
for (String animal : animals) {
System.out.println(animal);
}
}
}
输出
Elephant Tiger Lion

