黑马程序员技术交流社区

标题: 哈希值的问题 [打印本页]

作者: 张明星    时间: 2012-3-22 16:21
标题: 哈希值的问题
  1. int [] num={2,3,4};
  2.                 List<int[]> list=Arrays.asList(arr);
  3.                 System.out.println(list);
复制代码
代码将数组转化为了集合,最后输出集合元素的哈希值。请问:哈希值到底指的是什么,跟物理内存有什么关系,是随机分配的吗?      
作者: 张明星    时间: 2012-3-22 16:25
第一行是 int[] arr={2,3,4}
作者: 陈汉帆    时间: 2012-3-22 16:51
本帖最后由 陈汉帆 于 2012-3-22 17:02 编辑

泛型只能接收引用类型,int[] arr={2,3,4}是基本数据类型,arr本身就是一个对象,在这里编译器不会自作多情的把基本数据类型自动装箱成Integer,因为有可能你就只想传递一个数组类对象,而不是数组,代码应改成
Integer [] arr={2,3,4};

                List<Integer> list=Arrays.asList(arr);

                System.out.println(list);

哈希值就根据一个特定的哈希公式算出来的值,根据哈希值把数据存放在哈希表的不同区域
说下哈希表的作用:
假如你要从一万个数据查找一个数据,但很不巧你要找的数据在一万个数据的最后一个,那么你就要花费很多时间在遍历上,哈希表就是把这一万个数据分别存储在若干区域,要查找数据就先计算哈希值,然后找对应的区域,那么即使你要找的数据在那个区域的末尾,但也大大的缩小了查找的范围了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2