/*
Comparator接口的使用:定制排序
重写compare(obj o1,obj o2)方法
如果方法返回为正,表示o1>o2
如果方法返回为负,表示o1<o2
如果方法返回为零,表示o1=o2
Comparable接口的方式一旦指定,保证Comparable接口实现类的对象在任何位置都可以比较大小
Comparator接口属于临时性的比较
*/
@Test
public void test3(){
String[] arr=new String[]{"AA","CC","MM","GG","DD"};
Arrays.sort(arr, new Comparator<String>() {
//按照字符串从大到小的排列
@Override
public int compare(String o1, String o2) {
if(o1 instanceof String && o2 instanceof String ){
String s1=(String)o1;
String s2=(String)o2;
return -s1.compareTo(s2);//从大到小排列
}
throw new RuntimeException("输入的数据类型不一致!");
}
});
System.out.println(Arrays.toString(arr));
}
@Test
public void test4(){
Goods[] arr=new Goods[5];
arr[0]=new Goods("lenovoMouse",34);
arr[1]=new Goods("dellMouse",43);
arr[2]=new Goods("xiaomiMouse",12);
arr[3]=new Goods("huaweiMouse",65);
arr[4]=new Goods("microsoftMouse",43);
Arrays.sort(arr, new Comparator() {
//指明商品比较大小的方式:先按照产品名称从低到高,再按照价格从高到低排列
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Goods&& o2 instanceof Goods){
Goods goods1=(Goods) o1;
Goods goods2=(Goods) o2;
if(goods1.getName().equals(goods2.getName())){
return -Double.compare(goods1.getPrice(),goods2.getPrice());
}else{
return goods1.getName().compareTo(goods2.getName());
}
}
throw new RuntimeException("输入的数据类型不一致!");
}
});
System.out.println(Arrays.toString(arr));
}
}
Comparator接口实现定制排序
最新推荐文章于 2022-12-08 16:54:59 发布