数据比较

测试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));
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值