JAVA学习笔记32——hashCode和equals方法+set接口
2015-02-05 15:37
274 查看
最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。
本篇介绍两个内容,首先来说一下hashCode和equals方法:
一般情况下不需要重写hashCode和equals方法。
示例代码:
下面是set的几个常见方法的介绍:
本篇介绍两个内容,首先来说一下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"); } }
相关文章推荐
- 学习笔记-JAVA-考点10-什么情况下需要重写equals和hashcode()两个方法?
- java 学习笔记--Comparator中为什么其他类实现这个接口为什么没有复写equals(Object obj)这个方法?
- Java学习笔记(44)----------探索equals()和hashCode()方法
- java核心技术学习笔记8---equals()方法和hashCode()方法
- JAVA学习笔记(五)继承时的构造方法、多态、接口、汉诺塔
- Java学习笔记8:覆盖equals时总是要覆盖hashCode
- Java学习笔记之Object类以及equals()方法
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
- 【JAVA学习】hashcode()和equals()方法剖析
- Android(java)学习笔记229:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)
- Java学习笔记之继承和接口(一) super关键字、final关键字、abstract类和方法
- [学习笔记]java Enumeration接口方法的学习
- java对象通用方法之覆盖equals时请遵守通用约定、覆盖equals时总要覆盖hashCode、始终要覆盖toString、考虑实现Comparable接口
- java学习笔记——Object的equals方法
- java WEB学习笔记32:HttpSession 接口常用方法 及 HttpServletRequest接口中的Session方法 Demo
- Java学习笔记——equals()方法总结
- Java学习笔记6:覆盖equals时总是要覆盖hashCode
- Java源码学习-Object类的hashCode和equals方法
- 【JAVA学习】java中==、equals()、hashCode()都和对象的比较有关,在java中这三者各有什么用处呢,即java中为什么需要设计这三种对象的比较方法呢?
- Java中的hashCode和equals方法学习