栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java进阶篇8——HashSet

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java进阶篇8——HashSet

文章目录

1. 集合类总纲2. HashSet 的使用

2.1 HashSet 构造与增加元素2.2 遍历 HashSet 集合中的元素2.3 删除 HashSet 中的元素2.4 判断是否包含某个元素 contains(Object) 3. HashSet集合类不能有重复元素的实例

3.1 加入了重复对象3.2 要重写 equals() 和 hashCode() 方法

1. 集合类总纲

2. HashSet 的使用 2.1 HashSet 构造与增加元素

集合中元素的储存空间是自动开辟的。集合中元素是根据元素值和相应的哈希算法计算其地址,元素值相同,则地址相同。所以 HashSet中不存在元素值重复的元素。比如,HashSet 的存储就像夜晚的星星一样排列,无先后顺序。

		HashSet hashset = new HashSet();
		
		hashset.add("a");
		hashset.add("a"); // 无法添加,因为元素不能重复
		hashset.add(new Integer(1));
		int[] a = {1, 2, 3, 4};
		hashset.add(a);
		MyHashSet mh = new MyHashSet();
		hashset.add(mh);
2.2 遍历 HashSet 集合中的元素

集合中元素是依据元素值和相应的哈希算法计算其地址。遍历集合,需要遍历算法(即使用迭代器)。Iterator

	
	public static void practice1() {
		HashSet hashset = new HashSet();

		hashset.add(100);
		hashset.add(55);
		hashset.add(25);
		hashset.add(10);
		hashset.add(5);

		Iterator it = hashset.iterator();
		while (it.hasNext()) {
			System.out.print(it.next() + " ");
		}
	}
100 5 55 25 10 
2.3 删除 HashSet 中的元素

删除一个元素:

hashset.remove(Object);

删除所有元素:

hashset.clear();
2.4 判断是否包含某个元素 contains(Object)
	
	@SuppressWarnings("removal")
	public static void practice2() {
		HashSet hashset = new HashSet();

		hashset.add(new String("I love java"));
		hashset.add(new Integer(100));
		hashset.add(new Double(100.2));
		hashset.add("a");

		if (hashset.contains("I love java"))
			System.out.println("集合中包含I love java");
		else
			System.out.println("集合中不包含I love java");
	}
 
集合中包含I love java
3. HashSet集合类不能有重复元素的实例 3.1 加入了重复对象
package javaweb.collection;

import java.util.HashSet;
import java.util.Iterator;

public class Student {
	String id, name;
	int age;

	public Student(String id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}
	
	public String toString() {
		return id + " " + name + " " + age;
	}

	public static void main(String[] args) {
		HashSet hashset = new HashSet();

		Student student1 = new Student("1001", "chen", 18);
		Student student2 = new Student("1001", "chen", 18);
		hashset.add(student1);
		hashset.add(student2);

		Iterator it = hashset.iterator();
		while(it.hasNext()) {
			System.out.println(it.next() + " ");
		}
	}

}
1001 chen 18 
1001 chen 18 
3.2 要重写 equals() 和 hashCode() 方法

这下就只增加得了一个对象

package javaweb.collection;

import java.util.HashSet;
import java.util.Iterator;

public class Student {
	String id, name;
	int age;

	public Student(String id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		return id + " " + name + " " + age;
	}

	@Override
	public boolean equals(Object obj) {
		return id.equals(((Student) obj).id);
	}

	@Override
	public int hashCode() {
		return Integer.valueOf(id);
	}

	public static void main(String[] args) {
		HashSet hashset = new HashSet();

		Student student1 = new Student("1001", "chen", 18);
		Student student2 = new Student("1001", "chen", 18);
		hashset.add(student1);
		hashset.add(student2);

		Iterator it = hashset.iterator();
		while (it.hasNext()) {
			System.out.println(it.next() + " ");
		}
	}

}
1001 chen 18 
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号