测试Arrays类的操作方法
package com.bank.demo;
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args) throws Exception {
int[] dataA = new int[] { 1, 2, 3 }; // 数组A
int[] dataB = new int[] { 1, 2, 3 }; // 数组B
System.out.println(Arrays.equals(dataA, dataB)); // 数组比较
Arrays.fill(dataA, 3); // 填充数组
System.out.println(Arrays.toString(dataA)); // 数组输出
}
}
编写操作方法(抛出Exception in thread "main" java.lang.ClassCastException: com.bank.demo.Person cannot be cast to java.lang.Comparable
因为Persion对象无法转换成Comparable实例,普通的对象数组是不能进行比较的,如果需要比较请实现Comparable 接口)
package com.bank.demo;
import java.util.Arrays;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]\n";
}
}
public class TestDemo {
public static void main(String[] args) throws Exception {
Person per[] = new Person[] { new Person("张三", 20),
new Person("李四", 19),
new Person("王五", 21) }; // 对象数组
Arrays.sort(per); // 数组排序
System.out.println(Arrays.toString(per));
}
}
实现比较器
package com.bank.demo;
import java.util.Arrays;
class Person implements Comparable <Person> { // 实现比较器
private String name ;
private int age ;
public Person(String name,int age) {
this.name = name ;
this.age = age ;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]\n";
}
@Override
public int compareTo(Person o) { // 覆写比较方法
if (this.age > o.age) {
return 1;
} else if (this.age < o.age) {
return -1;
} else {
return 0;
}
}
}
public class TestDemo {
public static void main(String[] args) throws Exception {
Person per[] = new Person[] { new Person("张三", 20),
new Person("李四", 19),
new Person("王五", 21) }; // 对象数组
Arrays.sort(per); // 数组排序
System.out.println(Arrays.toString(per));
}
}
已经定义好了一个Person类
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]\n";
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
}
专门为Person类补救一个比较规则类
class PersonComparator implements Comparator<Person> { // 定义比较规则
@Override
public int compare(Person o1, Person o2) {
if (o1.getAge() > o2.getAge()) {
return 1;
} else if (o1.getAge() < o2.getAge()) {
return -1;
} else {
return 0;
}
}
}
实现排序
public class TestDemo {
public static void main(String[] args) throws Exception {
Person per[] = new Person[] { new Person("张三", 20),
new Person("李四", 19), new Person("王五", 21) };
Arrays.sort(per, new PersonComparator()); // 对象数组排序
System.out.println(Arrays.toString(per));
}
}