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