package com.Arrays;
import java.util.Arrays;
import java.util.List;
public class Study01 {
/**
* java.util 需要导入包 主要用来操作数组,排序和搜索
*
* 没有构造方法,所有方法都是static修饰 方法: asList(T... a) 返回受数组支持的固定大小的List 查找(以byte为例子):
* 注意:使用它查找有一个前提:查找的数组是有序的 binarySearch(byte[] a,byte key)
* 在指定数组中查找指定的值,返回下标,使用的是二分查找 binarySearch(byte[] a,int fromIndex,int
* toIndex,byte key) 在指定数组的指定下标区间中查找指定元素 复制 copyOf(byte[] a,int newLength)
* 复制
* 指定数组的元素得到新数组,新数组的长度是固定的,如果长度比就数组短,截取前部分,如果不够,使用默认值填充 copyOfRange(byte[]
* a,int from,int to) 将旧数组在指定下标范围内的元素作为新数组返回
* 填充
* fill(byte[] a,byte val)
* 将val填充给a中的每一个元素
* fill(byte[] a,int fromIndex,int toIndex,byte val)
* 将val填充给a中的指定元素中 比较: equals()比较数组的值是否相等,重写了Object类的同名方法 表示: toString()
* 返回类似[1, 2, 3...]形式的数组所有内容,重写了Object类的同名方法,注意是1.5版本开始 排序: sort(byte[])
* 底层使用的而是快速排序算法
*
*/
public static void main(String[] args) {
Study01 sd=new Study01();
sd.testCopyAndFill();
}
public void testAsList(){
List l=Arrays.asList(1,2,3);
for(int i=0;i<l.size();i++){
System.out.print(l.get(i)+"\t");
}
}
public void testSortAndToString(){
int[] ins = { 2, 34, 12, 54, 67, 230 };
System.out.println(Arrays.toString(ins));
Arrays.sort(ins);
System.out.println(Arrays.toString(ins));
}
public void testBinary(){
int[] ins = { 2, 34, 12, 54, 67, 230 };
//二分查找需要是有序
Arrays.sort(ins);
System.out.println(Arrays.toString(ins));
System.out.println(Arrays.binarySearch(ins, 34));
}
public void testCopyAndFill(){
int[] ins = { 2, 34, 12, 54, 67, 230 };
int[] ins1=Arrays.copyOf(ins, 4);
System.out.println(Arrays.toString(ins1));
ins1=Arrays.copyOf(ins, 6);
System.out.println(Arrays.toString(ins1));
Arrays.fill(ins1, 12);
System.out.println(Arrays.toString(ins1));
Arrays.fill(ins1, 2,4,30);
System.out.println(Arrays.toString(ins1));
}
public int binarySearch0(int[] a, int fromIndex, int toIndex, int key) {//二分查找的源码
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {
int mid = (low + high) >>> 1;//无符号左移1位,相当于/2
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
}