数组知识点回顾三
数组知识点回顾之哈希表:
?
?1、 数组中元素存放位置存在的问题:
? 在一般数组中,元素在数组中的索引位置是随机的,元素的取值和元素的位置之间不存在确定的关系,因此,在数组中查找特定位置的时,需要把查找的值和一系列元素进行比较。
? 导致的结果:
? 由于这列查找方法建立在“比较”的基础之上,查找的效率以来与查找过程中所进行的比较的次数。
?
? 2、哈希表的由来:
? 如果数组元素的值value和它在数组中的索引index有一个确定的对应关系hash(value):
? index = hash(value);
? 那么对于给定的值,只要调用以上的hash(value)方法,就能找到数组中取值为value的元素的位置。如果数组中的元素的值和位置存在确定的对应关系,这样的数组成为哈希表。
? 这种数组的优点:能够提高查找数据的效率。
?
? 3、哈希码:hash()方法的返回值也称为元素的哈希码。
?
? 4、哈希冲突:多个元素具有相同的哈希码的情况,称为hash冲突。
?
? 5、为什么不能直接把哈希码作为元素的位置?
? 为了解决hash冲突,保证每个元素具有不同的位置。
?
数组知识点回顾之数组使用类:Arrays()在java.util包中,有一个用于操纵数组的使用类:java.util.Arrays。它提供了一系列的静态方法。?
package fifthsection;import java.util.Arrays;/* * 演示了Arrays类的用法 */public class ArraysTester {//用Arrays类操纵字符串数组public void testStringArray() {String[] str1 = new String[]{"Tom1","Jack","Mike","Marry","Tom2"};String[] str2 = new String[]{"Tom1","Jack","Mike","Marry","Tom2"};System.out.println("str1是否和str2相等:"+Arrays.equals(str1, str2));Arrays.sort(str1);System.out.println("排序后str1是否和str2相等:"+Arrays.equals(str1, str2));System.out.println("Jack在str1数组中的位置:"+Arrays.binarySearch(str1, "Jack"));System.out.println("Jack在str2数组中的位置:"+Arrays.binarySearch(str2, "Jack"));System.out.println("str1:"+Arrays.toString(str1));System.out.println("str2:"+Arrays.toString(str2));}//用Arrays类操纵int类型的数组public void testIntArray() {int[] a1 = new int[5],a2 = new int[5],a3 = {4,5,6,3,9,4,4};Arrays.fill(a1, 100);/* * 把a1数组中的内容拷贝到a2数组中 */System.arraycopy(a1, 0, a2, 0, a1.length);System.out.println("a1是否和a2相等:"+Arrays.equals(a1, a2));Arrays.sort(a3);System.out.println("5在数组a3中的位置:"+Arrays.binarySearch(a3, 5));System.out.println("4在数组a3中的位置:"+Arrays.binarySearch(a3, 4));System.out.println("数组a1:"+Arrays.toString(a1));System.out.println("数组a2:"+Arrays.toString(a2));System.out.println("数组a3:"+Arrays.toString(a3));}//main()入口public static void main(String[] args) {ArraysTester at = new ArraysTester();at.testStringArray();at.testIntArray();}}System类的arraycopy()静态方法有如下定义:?arraycopy(Object src,int src_postion,Object dst,int dst_postion,int length)以上src指定源数组,参数src_postion指定从远数组中开始拷贝的位置,参数dst指定目标数组,参数dst_postion指定向目标数组中拷贝的起始位置,参数length指定所要拷贝的元素的数目。以上知识点在上一个代码中应用?