常用类库——Arrays
概述
专门用于数组操作的类
copyOf()
用于数组的扩容,如果新的长度小于原来的长度,则从头开始复制到新长度后截断
binarySearch()
用于二分查找数组的指定值,如果找不到就返回一个负值-(low+1),查找前需要排序,否则无法得到正确的结果。
sort()
用于对数组元素进行排序,预期nlogn复杂度。
如果需要对对象数组进行排序,则需要定义专门的比较器对象,并实现Comparator接口
例如:
//People对象既是数组的元素,也可以作为自己的比较器
class People implements Comparator<People>{
String name;
int age;
//实现向字符串的转换,便于输出
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//构造方法
public People() {
}
public People(String name, int age) {
this.name = name;
this.age = age;
}
//比较器的实现
@Override
public int compare(People o1, People o2) {
if(o1.age<o2.age)
return -1;
else
return 1;
}
}
此时可以对对象数组排序:
public static void main(String[] args) throws Exception {
People[] p=new People[2];
p[0]=new People("aaa",18);
p[1]=new People("bbb",1);
//创建一个People()对象作为比较器
Arrays.sort(p,new People());
//使用forEach迭代输出数组内容,数组元素必须实现了toString方法才能用println输出
for(People pp:p){
System.out.println(pp);
}
}
toString()
用于将数组转换成String。