List怎么设计到哈希算法?

wonkju 2015-05-01 12:57:25
无意中发现, 使用
List<Person> ps = new ArrayList<Person>();

Person p = new Person();
ps.add(p); //调用add方法的时候, 会调用Person的hashCode方法.


我怎么觉得集合中, 设计到 hash算法的, 调用的时候, 才会调用 hashCode方法
如上例子, 调用 hashCode方法有什么意义?
...全文
291 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kiyoki 2015-05-04
  • 打赏
  • 举报
回复
这是在强加因果。。。
Rick-Bao 2015-05-04
  • 打赏
  • 举报
回复
你找找哈希值的用处就知道为啥调用hashcode了,, 据我了解,调用hashcode是为了避免重复的对象出现在同一容器中 。 在list接口集合的实现类arraylist中,你也可以覆盖/重写hashcode方法来生成唯一不重复对象 而arraylist这个类是容许重复对象存在的,所以在这个类中没有调用hashcode方法 。
S117 2015-05-04
  • 打赏
  • 举报
回复
没有吧,ArrayList中没涉及到hashCoe呀
youzi05 2015-05-04
  • 打赏
  • 举报
回复
lz怎么知道调用hashCoe方法了?是文档上说的还是哪本书上说的
  • 打赏
  • 举报
回复
list 没涉及到hashCode啊。。。 一般带 map 涉及到hashCode 比较多
猫鼠同眠 2015-05-01
  • 打赏
  • 举报
回复
数组中除了基本类型外,也是存放的对象地址吧。变量a应该已经持有对象的地址了,至于楼主说的为什么要用hashcode方法,就不知道了,我刚刚想多了,想错了- -。
alan19931103 2015-05-01
  • 打赏
  • 举报
回复
import java.util.ArrayList;
import java.util.List;

public class Aa{
	public static void main(String[] args){
		Aa a = new Aa();
		List<Aa> lis = new ArrayList<Aa>();
		lis.add(a);
		
	}

	@Override
	public int hashCode() {
		System.out.println("被调用了");
		return 0; 
	} 
	
	
}
好像没有调用诶。。。。 arraylist内部是用数组实现的,应该不是返回地址的时候调用。(为什么要返回地址?)
猫鼠同眠 2015-05-01
  • 打赏
  • 举报
回复
List中放的是对象的内存地址,那么通过hashcode返回对象的地址
wonkju 2015-05-01
  • 打赏
  • 举报
回复
引用 1 楼 alan19931103 的回复:
大概在存的时候用了哈希吧,你看看源码不就知道了
源码看不出, 我看过.
alan19931103 2015-05-01
  • 打赏
  • 举报
回复
大概在存的时候用了哈希吧,你看看源码不就知道了

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧