返回java哈希表索引
时间: 2023-05-30 07:07:31 浏览: 160
哈希表的索引是根据键值(key)通过哈希函数计算得出的一个整数值。在Java中,哈希表的索引可以通过HashMap类中的hashCode()方法和equals()方法来计算和比较。具体实现可以参考以下代码:
```
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
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 (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public static void main(String[] args) {
Map<Student, String> map = new HashMap<>();
Student s1 = new Student("Tom", 18);
Student s2 = new Student("Jerry", 20);
Student s3 = new Student("Tom", 18);
map.put(s1, "A");
map.put(s2, "B");
map.put(s3, "C");
System.out.println(map.get(s1)); // A
System.out.println(map.get(s2)); // B
System.out.println(map.get(s3)); // C
}
}
```
在上面的代码中,我们创建了一个Student类,并重写了它的hashCode()方法和equals()方法。其中,hashCode()方法返回的是一个整数值,这个值可以根据对象的属性计算而来,一般需要保证相同的对象返回相同的hashCode值,不同的对象返回不同的hashCode值。equals()方法用于比较两个对象是否相等,一般需要根据对象的属性进行比较。
接下来,在main方法中,我们创建了一个HashMap对象,并向其中添加了三个Student对象。由于s1和s3的属性相同,因此它们的hashCode值也相同,equals方法返回true,所以s3的值会覆盖s1的值,最终map中只有两个元素。当我们通过s1、s2、s3分别获取map中的值时,可以得到"A"、"B"、"C"三个值,这说明我们成功地通过哈希表的索引进行了对象的查找。
阅读全文