package Hash;
import MyInterface.Iterator;
import MyInterface.Set;
/**
* HashSet 类的实现
*/
public class HashSet<T> implements Set<T> {
private static final Object PRESENT = new Object();
private HashMap<T, Object> map;
public HashSet() {
map = new HashMap<T, Object>();
}
public boolean add(T item) {
return map.put(item, PRESENT) == null;
}
public void clear() {
map.clear();
}
public boolean contains(Object obj) {
return map.containsKey(obj);
}
public boolean isEmpty() {
return map.isEmpty();
}
public Iterator<T> iterator() {
return map.keySet().iterator();
}
public boolean remove(Object item) {
return map.remove(item) == PRESENT;
}
public int size() {
return map.size();
}
public Object[] toArray() {
return map.keySet().toArray();
}
public String toString() {
return map.keySet().toString();
}
}
测试类
package Hash;
import MyInterface.Iterator;
import MyInterface.Set;
public class TestHashSet {
public static void main(String[] args) {
HashSet<String> hs = new HashSet<String>();
hs.add("Ad");
hs.add("Afawed");
hs.add("Afsd");
hs.add("Affd");
System.out.println(hs); // [Afsd, Ad, Affd, Afawed]
hs.remove("Ad");
Iterator<String> it = hs.iterator();
while(it.hasNext())
System.out.println(it.next());
hs.clear();
System.out.println(hs.size());
}
}
分享到:
相关推荐
在Java编程中,HashSet是一种不允许存储重复元素的集合,它实现了Set接口。HashSet是通过HashMap来实现的,其底层使用HashMap...掌握HashSet的实现原理对于Java开发者在实际编程中合理地选择和使用集合类具有重要意义。
### HashSet类的用法 #### 一、概述 `HashSet`是Java集合框架的一部分,它实现了`Set`接口。`HashSet`不允许重复的元素,并且不保证元素的顺序。此外,`HashSet`是非同步的,这意味着多线程环境下的安全问题需要...
在Java语言中,HashSet类是集合框架的重要组成部分,属于Set接口的一个实现。它基于哈希表的原理来存储不重复的元素,其核心在于利用哈希算法快速定位元素存储位置,从而提高数据存取的效率。本篇将详细介绍Java语言...
HashSet类实现了Set接口,其内部基于HashMap来存储和管理元素。这意味着HashSet的性能和特性与HashMap紧密相关。由于HashMap使用哈希表结构,HashSet能够快速地插入、查找和删除元素,时间复杂度通常为O(1)。 ...
HashSet类实现了Set接口,是一个基于散列表的Set实现类。HashSet类使用散列表来存储元素,查找和操作的效率非常高。 JAVA中常用的数据结构有很多,如Collection、List、Map、Set等,每种数据结构都有其特点和使用...
HashSet类实现了Set接口功能的继承,存储的元素是无序的,并且所有元素不允许有重复值。TreeSet类实现了Set接口功能外还实现了SortedSet接口的功能,所以该集合元素处于排序状态。 List接口继承自Collection接口,...
虽然C++标准库中没有直接提供HashSet类,但我们可以利用其他容器,如`std::unordered_set`来实现类似的功能。不过,在这个场景中,我们将探讨如何使用`std::vector`来模拟HashSet的行为。 `std::vector`是C++标准库...
HashSet的源代码中,我们可以看到HashSet类继承自AbstractSet,并实现了Set接口, Cloneable接口和Serializable接口。HashSet类中有一个私有的HashMap成员变量map,它用于存储所有的集合元素。HashSet类提供了多个...
首先,HashSet是Set接口的一个实现类,它用于存储唯一性的对象集合。所谓唯一性,指的是HashSet中不允许出现重复的元素,同时,它也允许存储null值。Set集合的特点是无序的,也就是说,集合中的元素没有固定的顺序,...
HashSet类实现了Set接口,它内部基于哈希表(HashMap)实现。HashSet在存储元素时,会调用对象的hashCode()方法计算哈希值,然后将元素存储在对应哈希桶中。由于HashSet不允许重复元素,所以当尝试添加一个已存在的...
本文将深入探讨HashSet类及其相关的知识点。 首先,HashSet是由HashMap内部实现的,它利用了键值对(key-value)的概念,但与HashMap不同的是,HashSet不存储值,而是直接使用键(key)作为存储元素。每个元素在...
- **`HashSet`与`ArraySet`/`LinkedSet`**:`HashSet`是基于哈希表实现的,而`ArraySet`通常是指数组实现的集合,`LinkedSet`则是基于链表实现的有序集合。`HashSet`提供了非常高效的增删查操作,但不保证元素的插入...
HashSet是Java编程语言中的一种集合类,它是一个不包含重复元素的集合,其内部实现基于HashMap。HashSet不保证元素的顺序,允许存储null元素,并且是非同步的,这意味着在多线程环境下,如果需要保证线程安全,需要...
Java中的HashSet类实现了Set接口,提供了快速的插入和查找。例如: ```java Set<Integer> set = new HashSet(); set.add(1); set.add(2); ``` 6. **列表(List)**:列表允许重复元素并保持插入顺序。ArrayList和...
`HashSet`是基于哈希表实现的Set(集合)实现,它不保证集合中元素的任何特定顺序。`HashSet`允许快速添加、删除和查找元素,但不能包含重复的元素。为了正确地工作,`HashSet`要求元素具有良好的`equals()`和`...
Set是java中一个不包含重复元素的collection。更正式地说,set 不包含满足e1....HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如下所示。
在Java编程语言中,集合框架是处理数据的重要组成部分,其中`HashSet`和`TreeSet`是两种常用的Set接口实现类。它们各自具有独特的特性和用途,理解它们的区别对于编写高效且正确的代码至关重要。 首先,`HashSet`是...
本篇将详细讲解如何利用Java的HashSet类来删除学生对象,以及HashSet的一些核心特性。 首先,了解HashSet的基本操作。HashSet类提供了添加元素(add())、删除元素(remove())、检查元素是否存在(contains())等...
HashSet 是 Java 中的一个集合类,它实现了 Set 接口并提供了基于哈希表的无序、不重复元素的集合。具体来说,它是通过哈希表(实际上是一个 HashMap 实例)来存储元素的。 以下是 HashSet 的一些主要特点: 无序...
3. **接口和抽象类**:通过定义接口或抽象类来规范行为,其他类可以通过实现接口或继承抽象类来共享行为模式。这种方式提供了一种高级别的抽象,有助于设计出更优秀的框架和系统架构。 #### 三、`HashSet`的源代码...