常用方法该类包含用于操作数组的各种方法(如排序和搜索)。
将数组转化为链表
public staticList asList(T... a)
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] str = {"abc", "def", "ghi", "jkl"};
List list = Arrays.asList(str);
for (String string : list) {
System.out.println(string);
}
}
}
abc
def
ghi
jkl
二分查找
public static int binarySearch(int[] a,
int key)
//数组类型可以替换为其他类型
进行二分法查找的前提是必须对数组进行排序
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr = {21, 32, 41, 12, 32, 11, 10, -4};
Arrays.sort(arr);
System.out.println(Arrays.binarySearch(arr, 23));
System.out.println(Arrays.binarySearch(arr, 12));
}
}
-6
3
复制数组
public static int[] copyOf(int[] original,
int newLength);
public static int[] copyOfRange(int[] original,
int from,
int to)
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr = {21, 33, 41, 12, 32, 11, 10, -4};
int[] copy = Arrays.copyOf(arr, arr.length - 2);
int[] copy1 = Arrays.copyOfRange(arr, 2, 5);
System.out.println("copy");
for (int i : copy) {
System.out.println(i);
}
System.out.println("copy1");
for (int i : copy1) {
System.out.println(i);
}
}
}
copy
21
33
41
12
32
11
copy1
41
12
32
判断数组相等
public static boolean equals(int[] a,
int[] a2)
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr = {21, 33, 41, 12, 32, 11, 10, -4};
int[] copy = Arrays.copyOf(arr, arr.length);
System.out.println(Arrays.equals(arr, copy));
}
}
true
填充相同的值
public static void fill(int[] a,
int val)
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr = new int[4];
Arrays.fill(arr, 45);
for (int i : arr) {
System.out.println(i);
}
}
}
45
45
45
45
排序方法的使用
Arrays 工具类中的排序方法 sort 一般为默认排序方式,可以对数值,字符串等进行排序
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr = {21, 33, 41, 12, 32, 11, 10, -4};
Arrays.sort(arr);
for (int i : arr) {
System.out.print(i + " ");
}
}
}
-4 10 11 12 21 32 33 41
当然,我们也可以对其进行自定义排序,有两种方式
使用 Comparator 比较器
package 集合;
import java.util.Arrays;
import java.util.Comparator;
public class Test {
public static void main(String[] args) {
Stu s1 = new Stu("张三", 19);
Stu s2 = new Stu("李四", 20);
Stu s3 = new Stu("王五", 17);
Stu[] s = new Stu[3];
s[0] = s1;
s[1] = s2;
s[2] = s3;
for (Stu stu : s) {
System.out.println(stu);
}
Arrays.sort(s, new Comparator() {
//按照年龄大小进行排序
@Override
public int compare(Stu o1, Stu o2) {
// TODO Auto-generated method stub
return o1.getAge() - o2.getAge();
}
});
System.out.println("---排序后-------");
for (Stu stu : s) {
System.out.println(stu);
}
}
}
class Stu {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Stu(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Stu [name=" + name + ", age=" + age + "]";
}
}
Stu [name=张三, age=19]
Stu [name=李四, age=20]
Stu [name=王五, age=17]
---排序后-------
Stu [name=王五, age=17]
Stu [name=张三, age=19]
Stu [name=李四, age=20]
数组元素实现 Comparable 接口
package 集合;
import java.util.Arrays;
import java.util.Comparator;
public class Test {
public static void main(String[] args) {
Stu s1 = new Stu("张三", 19);
Stu s2 = new Stu("李四", 20);
Stu s3 = new Stu("王五", 17);
Stu[] s = new Stu[3];
s[0] = s1;
s[1] = s2;
s[2] = s3;
for (Stu stu : s) {
System.out.println(stu);
}
Arrays.sort(s);
System.out.println("---排序后-------");
for (Stu stu : s) {
System.out.println(stu);
}
}
}
class Stu implements Comparable{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Stu(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Stu [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Stu o) {
return this.getAge() - o.getAge();
}
}
Stu [name=张三, age=19]
Stu [name=李四, age=20]
Stu [name=王五, age=17]
---排序后-------
Stu [name=王五, age=17]
Stu [name=张三, age=19]
Stu [name=李四, age=20]



