java的hashCode和equals函数在HashMap容器中的作用
2014-12-08 09:53
453 查看
java的任意一个Object都有两个可以重写的函数,hashCode()和equals()。hashCode可用于产生HashMap容器中Object对应的key,而equals用于判断Object相不相等。
曾经项目中遇到一个需求,抽象出来,就是统计名字相同的学生的人数,并打印相应人数的学号信息。当时就是用到了上述两个特性实现的。
public class Student
{
int id;
String name;
boolean gender;
public Student(int i, String n, boolean g)
{
id = i;
name = n;
gender = g;
}
public int hashCode()
{
return name.hashCode();
}
public boolean equals(Object st)
{
return st.name.equals((Student)st.name);
}
}
public class test
{
private static HashMap<Student, Integer> map = new HashMap<Student, Integer>();
private static void appendStudent(Student st)
{
if (map.containsKey(st))
map.put(st, map.get(st) + 1);
else
map.put(st, 1);
}
private static void printMap()
{
for (Map.Entry<Student, Integer> e : map.entrySet())
{
System.out.println(e.getKey() + ":" + e.getValue());
}
}
public static void main(String[] args)
{
appendStudent(new Student(1, "wwx", true));
appendStudent(new Student(2, "wwx", true));
appendStudent(new Student(3, "wwx", true));
printMap();
}
}
曾经项目中遇到一个需求,抽象出来,就是统计名字相同的学生的人数,并打印相应人数的学号信息。当时就是用到了上述两个特性实现的。
public class Student
{
int id;
String name;
boolean gender;
public Student(int i, String n, boolean g)
{
id = i;
name = n;
gender = g;
}
public int hashCode()
{
return name.hashCode();
}
public boolean equals(Object st)
{
return st.name.equals((Student)st.name);
}
}
public class test
{
private static HashMap<Student, Integer> map = new HashMap<Student, Integer>();
private static void appendStudent(Student st)
{
if (map.containsKey(st))
map.put(st, map.get(st) + 1);
else
map.put(st, 1);
}
private static void printMap()
{
for (Map.Entry<Student, Integer> e : map.entrySet())
{
System.out.println(e.getKey() + ":" + e.getValue());
}
}
public static void main(String[] args)
{
appendStudent(new Student(1, "wwx", true));
appendStudent(new Student(2, "wwx", true));
appendStudent(new Student(3, "wwx", true));
printMap();
}
}
相关文章推荐
- 【Java】通过HashMap哈希表的原理分析来探讨equals,hashcode在哈希表中的作用
- 对java中equals和hashCode函数的一些理解
- java中hashcode()函数的作用
- 对java中equals和hashCode函数的一些理解
- Java中HashMap的hashcode的作用?
- Java高级部分容器---equals方法和hashcode方法解密
- Java equals()和hashCode()的作用
- Java equals()和hashCode()的作用
- java hashmap equals() hashcode()
- Java自带容器类的equals和hashCode方法
- Java HashMap实现原理0——从hashCode,equals说起
- Java equals()和hashCode()的作用
- [Java] 容器-01 实现 Comparable 接口 / 重写 equals 与 hashCode (1个图 1个类 3个知识点 6个接口)
- java--map容器的hashcode和equals
- Java的set,map容器中如何唯一确定一个元素——hashCode()和equals()
- 对java中equals和hashCode函数的一些理解
- Java equals()和hashCode()的作用
- java当中equals函数的作用小结
- 【Java】Map杂谈,hashcode()、equals()、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap
- Java中的equals与hashCode方法(判断插入容器的内容是否重复)