`
baby69yy2000
  • 浏览: 187837 次
  • 性别: Icon_minigender_1
  • 来自: 自己输入城市...
社区版块
存档分类
最新评论

HashSet 类的实现

    博客分类:
  • Util
阅读更多
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());
		
	}

}
分享到:
评论

相关推荐

    HashSet的实现原理

    在Java编程中,HashSet是一种不允许存储重复元素的集合,它实现了Set接口。HashSet是通过HashMap来实现的,其底层使用HashMap...掌握HashSet的实现原理对于Java开发者在实际编程中合理地选择和使用集合类具有重要意义。

    HashSet类的用法.pdf

    ### HashSet类的用法 #### 一、概述 `HashSet`是Java集合框架的一部分,它实现了`Set`接口。`HashSet`不允许重复的元素,并且不保证元素的顺序。此外,`HashSet`是非同步的,这意味着多线程环境下的安全问题需要...

    hashset类的使用

    在Java语言中,HashSet类是集合框架的重要组成部分,属于Set接口的一个实现。它基于哈希表的原理来存储不重复的元素,其核心在于利用哈希算法快速定位元素存储位置,从而提高数据存取的效率。本篇将详细介绍Java语言...

    ThinkinginJava之Set接口、HashSet源码学习.pdf

    HashSet类实现了Set接口,其内部基于HashMap来存储和管理元素。这意味着HashSet的性能和特性与HashMap紧密相关。由于HashMap使用哈希表结构,HashSet能够快速地插入、查找和删除元素,时间复杂度通常为O(1)。 ...

    JAVA中常用的数据结构

    HashSet类实现了Set接口,是一个基于散列表的Set实现类。HashSet类使用散列表来存储元素,查找和操作的效率非常高。 JAVA中常用的数据结构有很多,如Collection、List、Map、Set等,每种数据结构都有其特点和使用...

    java基础知识学习教程-9集合与泛型.pptx

    HashSet类实现了Set接口功能的继承,存储的元素是无序的,并且所有元素不允许有重复值。TreeSet类实现了Set接口功能外还实现了SortedSet接口的功能,所以该集合元素处于排序状态。 List接口继承自Collection接口,...

    c++用vector实现HashSet

    虽然C++标准库中没有直接提供HashSet类,但我们可以利用其他容器,如`std::unordered_set`来实现类似的功能。不过,在这个场景中,我们将探讨如何使用`std::vector`来模拟HashSet的行为。 `std::vector`是C++标准库...

    Java面试题之HashSet的实现原理

    HashSet的源代码中,我们可以看到HashSet类继承自AbstractSet,并实现了Set接口, Cloneable接口和Serializable接口。HashSet类中有一个私有的HashMap成员变量map,它用于存储所有的集合元素。HashSet类提供了多个...

    源码解析jdk7.0集合:HashSet的底层实现原理.pdf

    首先,HashSet是Set接口的一个实现类,它用于存储唯一性的对象集合。所谓唯一性,指的是HashSet中不允许出现重复的元素,同时,它也允许存储null值。Set集合的特点是无序的,也就是说,集合中的元素没有固定的顺序,...

    day03_List、Set 每日作业卷1

    HashSet类实现了Set接口,它内部基于哈希表(HashMap)实现。HashSet在存储元素时,会调用对象的hashCode()方法计算哈希值,然后将元素存储在对应哈希桶中。由于HashSet不允许重复元素,所以当尝试添加一个已存在的...

    集合类HashSet

    本文将深入探讨HashSet类及其相关的知识点。 首先,HashSet是由HashMap内部实现的,它利用了键值对(key-value)的概念,但与HashMap不同的是,HashSet不存储值,而是直接使用键(key)作为存储元素。每个元素在...

    HashSet去重

    - **`HashSet`与`ArraySet`/`LinkedSet`**:`HashSet`是基于哈希表实现的,而`ArraySet`通常是指数组实现的集合,`LinkedSet`则是基于链表实现的有序集合。`HashSet`提供了非常高效的增删查操作,但不保证元素的插入...

    HashSet详解和使用示例_动力节点Java学院整理

    HashSet是Java编程语言中的一种集合类,它是一个不包含重复元素的集合,其内部实现基于HashMap。HashSet不保证元素的顺序,允许存储null元素,并且是非同步的,这意味着在多线程环境下,如果需要保证线程安全,需要...

    数据结构(一些关于java的,不全,待补充)

    Java中的HashSet类实现了Set接口,提供了快速的插入和查找。例如: ```java Set&lt;Integer&gt; set = new HashSet(); set.add(1); set.add(2); ``` 6. **列表(List)**:列表允许重复元素并保持插入顺序。ArrayList和...

    treemap treeset hashset hashmap 简要介绍

    `HashSet`是基于哈希表实现的Set(集合)实现,它不保证集合中元素的任何特定顺序。`HashSet`允许快速添加、删除和查找元素,但不能包含重复的元素。为了正确地工作,`HashSet`要求元素具有良好的`equals()`和`...

    HashSet和TreeSet.doc

    Set是java中一个不包含重复元素的collection。更正式地说,set 不包含满足e1....HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如下所示。

    排序之HashSet和TreeSet的区别

    在Java编程语言中,集合框架是处理数据的重要组成部分,其中`HashSet`和`TreeSet`是两种常用的Set接口实现类。它们各自具有独特的特性和用途,理解它们的区别对于编写高效且正确的代码至关重要。 首先,`HashSet`是...

    java 利用HashSet删除学生

    本篇将详细讲解如何利用Java的HashSet类来删除学生对象,以及HashSet的一些核心特性。 首先,了解HashSet的基本操作。HashSet类提供了添加元素(add())、删除元素(remove())、检查元素是否存在(contains())等...

    java集合-HashSet的使用

    HashSet 是 Java 中的一个集合类,它实现了 Set 接口并提供了基于哈希表的无序、不重复元素的集合。具体来说,它是通过哈希表(实际上是一个 HashMap 实例)来存储元素的。 以下是 HashSet 的一些主要特点: 无序...

    由HashSet谈重用

    3. **接口和抽象类**:通过定义接口或抽象类来规范行为,其他类可以通过实现接口或继承抽象类来共享行为模式。这种方式提供了一种高级别的抽象,有助于设计出更优秀的框架和系统架构。 #### 三、`HashSet`的源代码...

Global site tag (gtag.js) - Google Analytics