Java的比较器-Comparable & Comparator
package Offer; public class Goods implements Comparable{ String name; double price; public Goods() { } public Goods(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public double getPrice() { return price; } @Override public String toString() { return "Goods{" + "name='" + name + '\'' + ", price=" + price + '}'; }
//从大到小 @Override public int compareTo(Object o) { if (o instanceof Goods) { Goods tmp = (Goods) o; if (this.price < tmp.price) { return 1; } else if (this.price > tmp.price) { return -1; } else { return 0; } } throw new RuntimeException("输入的类型不正确"); } }
package Offer; import org.junit.Test; import java.lang.reflect.Array; import java.util.Arrays; import java.util.Comparator; public class Compare { //方法一:使用Comparable(自然排序)对自定义类实现按照price实现从大到小排序 @Test public void test() { Goods[] goods = new Goods[5]; goods[0] = new Goods("Huawei", 254); goods[1] = new Goods("Alibaba", 542); goods[2] = new Goods("Douyin", 425); goods[3] = new Goods("Tencent", 452); goods[4] = new Goods("Xiaomi", 524); Arrays.sort(goods); System.out.println(Arrays.toString(goods)); } //方法二:使用Comparator(定制排序)对自定义类实现按照price实现从小到大排序 @Test public void test1() { Goods[] goods = new Goods[5]; goods[0] = new Goods("Huawei", 254); goods[1] = new Goods("Alibaba", 542); goods[2] = new Goods("Douyin", 425); goods[3] = new Goods("Tencent", 452); goods[4] = new Goods("Xiaomi", 524); Arrays.sort(goods, new Comparator() { @Override public int compare(Object o1, Object o2) { if (o1 instanceof Goods && o2 instanceof Goods) { Goods tmp1 = (Goods) o1; Goods tmp2 = (Goods) o2; if (tmp1.price < tmp2.price) { return -1; } else if (tmp1.price > tmp2.price) { return 1; } else { return 0; } } throw new RuntimeException("输入的类型无法比较"); } }); System.out.println(Arrays.toString(goods)); } }
作者:Ryanjie
出处:http://www.cnblogs.com/ryanjan/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!