您的位置:首页 > 编程语言 > Java开发

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

2015-02-05 15:37 274 查看
最近在看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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐