美文网首页
专题二 java数组

专题二 java数组

作者: 永不熄灭的火焰_e306 | 来源:发表于2019-12-04 19:16 被阅读0次

专题二 数组

---------------------主要讲Arrays的几个常用方法

一、Arrays.fill() 填充数据

 int size=6;
 byte[] a2 = new byte[size];
 Arrays.fill(a2,(byte)11);
 print("a2"+Arrays.toString(a2));    //[11,11,11,11,11,11]
 ​
 String[] a9 = new String[size];
 Arrays.fill(a9,3,5,"world");//[11,11,11,"world","world",11,11]

二、arraycopy 复制数组

 System.arraycopy(i,0,j,0,i.length);
 //源数组,原数组中起始位置开始复制,目标数组,目标数组开始复制,需要复制的元素个数

注意:如果复制对象数组,那么只是复制了对象的引用--而不是对象本身的拷贝,(浅复制),并且两个数组必须具有相同的确切类型。

三、数组的比较及数组中元素的比较

Arrays.equals(s1,s2); 数组相等的比较是基于内容的而非位置。

四、数组排序及反序

Arrays.sort()无需多讲,对于String排序算法依据词典编排顺序排序.

 Arrays.sort(sa,Collections.reverseOrder()); //与sort排序正好相反
 ​
 Arrays.sort(sa,String.CASE_INSENSITIVE_ORDER);//忽略大小写

五、在已经排序的数组中查找 Arrays.binarySearch()

[引用:Java之数组查询Arrays类的binarySearch()方法详解​] https://blog.csdn.net/cxhply/article/details/49423501

大图.png

1) binarySearch(Object[], Object key)

a: 要搜索的数组

key:要搜索的值

如果key在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。

技巧:

[1] 搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”;

[2] 搜索值是数组元素,从0开始计数,得搜索值的索引值;

[3] 搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1);

[4] 搜索值不是数组元素,且小于数组内元素,索引值为 – 1。

程序:

 int arr [] =newint[]{1,3,4,5,8,9};
 ​
  Arrays.sort(arr);
 ​
  int index1 = Arrays.binarySearch(arr,6);
 ​
  int index2 = Arrays.binarySearch(arr,4);
 ​
  int index3 = Arrays.binarySearch(arr,0);
 ​
  int index4 = Arrays.binarySearch(arr,10);
 ​
  System.out.println("index1 = "+ index1 +", index2 = " + index2 +
 ​
  ", index3 = " + index3 +", index4 = "+ index4);

结果:index1= -5, index2 = 2, index3 = -1, index4 = -7 [图片上传失败...(image-43acb6-1575457912979)]

图片1.png 图片2.png 图片3.png
图片4.png

2) binarySearch(Object[], int fromIndex, int toIndex, Object key)

a:要搜索的数组

fromIndex:指定范围的开始处索引(包含)

toIndex:指定范围的结束处索引(不包含)

key:要搜索的值

如果要搜索的元素key在指定的范围内,则返回搜索值的索引;否则返回-1或“-”(插入点)。

技巧:

[1] 该搜索键在范围内,但不是数组元素,由1开始计数,得“ - 插入点索引值”;

[2] 该搜索键在范围内,且是数组元素,由0开始计数,得搜索值的索引值;

[3] 该搜索键不在范围内,且小于范围(数组)内元素,返回–(fromIndex + 1);

[4] 该搜索键不在范围内,且大于范围(数组)内元素,返回 –(toIndex + 1)。

程序:

  int arr [] =newint[]{1,3,4,5,8,9};
 ​
  System.out.println(arr.length+1);
 ​
  Arrays.sort(arr);
 ​
  int index5 = Arrays.binarySearch(arr,1, 4, 6);
 ​
  int index6 = Arrays.binarySearch(arr,1, 4, 4);
 ​
  int index7 = Arrays.binarySearch(arr,1, 4 ,2);
 ​
  int index8 = Arrays.binarySearch(arr,1, 3, 10);
 ​
  int index9 = Arrays.binarySearch(arr,1, 3, 0);
 ​
  System.out.println("index5 = "+ index5 +", index6 = " + index6 +
 ​
  ", index7 = " + index7 +", index8 = "+ index8 +
 ​
  ", index9 = " + index9);

结果:index5 = -5, index6 = 2,index7 = -2, index8 = -4, index9 = -2

图片11.png 图片12.png 图片13.png 图片14.png 图片15.png

相关文章

网友评论

      本文标题:专题二 java数组

      本文链接:https://www.haomeiwen.com/subject/bznlgctx.html