`
baby69yy2000
  • 浏览: 182773 次
  • 性别: 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());
		
	}

}
分享到:
评论

相关推荐

    c++用vector实现HashSet

    c++一个用vector实现java的HashSet集合类,可以将任何类,数字,字符串,vector等等存放到里面

    HashSet和TreeSet.doc

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

    java集合-HashSet的使用

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

    集合形式实现登陆注册功能

    这是一个用集合实现简单登陆的代码演示,功能界面简单,只是为了巩固集合知识

    Java HashSet

    HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。 HashSet 允许有 null 值。 HashSet 是无序的,即不会记录插入的顺序。 HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果...

    java技术文档 常用类和经典应用

    HashSet类的用法.pdf Hashtable类的用法.pdf Java语言基础.pdf Math类的常用方法.pdf String与StringBuffer.pdf Vector类的用法.pdf 迭代器Iterator的用法.pdf 反射机制.pdf 访问路经问题.pdf 基于MVC和RMI的分布....

    对java基础集合部分(List、HashMap、HashSet、ArrayList等)底层源码的分析与总结

    这篇集合总结一共包括十二节,介绍了一些接口和实现类的底层源码以及基本的增加、删除元素等的操作(包括List、Map、Set接口、ArrayList、Vector、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类)。...

    java中set、list和map的使用方法实例

    // set容器接口的实现类有HashSet和 LinkedHashSet两个 // HashSet不保证迭代顺序, LinkedHashSet按照元素插入的顺序迭代. // 学习List对象容器的使用 // List容器中的对象允许重复 // 常用的list接口的实现类有...

    .NET CF HashSet-开源

    .NET中HashSet类的实现,该实现可在.NET Compact Framework(.NET CF)中使用,而该特性本来就不存在

    java语言中使用的类总结

    系统总结了 1.Date类 2.Calendar类 3.Math类与Biglnteger类 4.LinkedList泛型类 5.HashSet泛型类 6.HashMap,V&gt;泛型类 7.TreeSet泛型类 8.TreeMap,V&gt;泛型类 9.Stack泛型类 等方面的含义用法和范例。。。

    去除链表重复元素-Java 实现

    在Java中,去除单链表中的重复元素可以通过使用哈希集合(HashSet)来实现,该集合用于存储已经遍历过的元素。在遍历链表的过程中,我们将每个元素与集合中的元素进行比较,如果发现重复,则删除链表中的该元素。 ...

    java集合类学习与实例

    实现类:红色Collection|_____Set(HashSet)| |_____SortedSet(TreeSet)|_____List(LinkedList,ArrayList) Collection:集合层次中的根接口,JDK没有提供这个接口的实现类。Set:不能包含重复的元素,子接口SortedSet是...

    java集合类原理面试题

    Map接口有哪些实现类? 描述一下Map put的过程 如何得到一个线程安全的Map? HashMap有什么特点? ConcurrentHashMap是怎么分段分组的? ConcurrentHashMap是怎么分段分组的? 介绍LinkedHashMap的底层原理 请介绍...

    浅析Java中Map与HashMap,Hashtable,HashSet的区别

    HashMap和Hashtable两个类都实现了Map接口,二者保存K-V对(key-value对);HashSet则实现了Set接口,性质类似于集合

    java集合-LinkedHashSet的使用

    继承关系:LinkedHashSet 继承自 HashSet 类,并且实现了 Set 接口。因此,它具有 HashSet 和 Set 的特性,同时还保持了元素的插入顺序。 哈希表与双向链表:LinkedHashSet 内部使用了一个哈希表来存储元素,并通过...

    《Java和Android开发实战详解》第6到10章源代码-by 南邮-陈杨

    8.2.3 在类实现多个接口 154 8.3 接口的继承 155 8.3.1 继承接口 156 8.3.2 接口的多重继承 157 8.4 抽象类 160 8.5 抽象类与接口 163 8.6 常量类 166 习题 168 第9章 嵌套类、多态与包 170 9.1 ...

    Java 集合方面的面试题

    如何使用 PriorityQueue 类实现一个最小堆? 如何使用 LinkedHashSet 类来实现 LRU 缓存? 如何使用 Stream API 对集合进行过滤、映射和归约操作? 如何使用 Java 8 中的新特性 Optional 类型来处理可能为 null 的...

    Java集合框架源码剖析:HashSet 和 HashMap

     之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap。  HashMap实现了Map...

    Java 最常见的 208 道面试题:第二模块答案

    24. 说一下 HashSet 的实现原理? 25. ArrayList 和 LinkedList 的区别是什么? 26. 如何实现数组和 List 之间的转换? 27. ArrayList 和 Vector 的区别是什么? 28. Array 和 ArrayList 有何区别? 29. 在 Queue 中...

Global site tag (gtag.js) - Google Analytics