JAVA学习笔记32——hashCode和equals方法+set接口

最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。

本篇介绍两个内容,首先来说一下hashCode和equals方法:


一般情况下不需要重写hashCode和equals方法。

示例代码:

import java.util.Date;
public class Student  extends Object{
	private Integer id;
	private String name;
	private Date birthday;
	@Override//(通过Eclipse自动生成的,根据id做一个散列算法)
	public int hashCode() {
		final int prime = 31;//常常取一个质数
		int result = 1;
		result = prime * result + id;
		return result;
	}
	@Override//自动生成的
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (id != other.id)
			return false;
		return true;
	}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestEquals {
	public static void main(String[] args) {
		List list = new ArrayList();  //它是有序可重复的,equals方法返回true表示可重复,所以s1和s2都能放进去
		Integer s1 = new Integer(243);
		Integer s2 = new Integer(243);
		list.add(s1);
		list.add(s2);
		System.out.println(list.size());   //会返回2
		Map map = new HashMap();
		//键不能重复,即equals方法返回的为true则表示重复,则发生覆盖
		map.put(s1, "AAAA");
		map.put(s2, "BBBBBB");
		System.out.println(map.get(243));//发生覆盖,返回BBBBBB
	}
}
接下来简单介绍一下set接口,set接口的实例容器hashSet的底层是通过hashMap来实现的,所以说他们其实没有太大的差别:


下面是set的几个常见方法的介绍:

import java.util.HashSet;
import java.util.Set;
/**
 * 测试Set的常用方法!
 */
public class TestSet {
	public static void main(String[] args) {
		Set set = new HashSet();
		set.add("aaa");
		set.add("bbb");
		set.add(new String("aaa"));
		System.out.println(set.size());
		System.out.println(set.contains("aaa"));
		set.remove("aaa");
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值