Java comparable的用法

首先建立一个老鼠实体,有重量和颜色的属性:
public class Mouse implements Comparable<Mouse>
{
public int weight;

public MOUSE_COLOR color;

public Mouse(int weight, MOUSE_COLOR color)
{
this.weight = weight;
this.color = color;
}

@Override
public int compareTo(Mouse o)
{
if (this.weight > o.weight)
{
return 1;
}
else if (this.weight == o.weight)
{
return 0;
}
else
{
return -1;
}

}


然后需求按照老鼠的重量排序,排序之后输出它的颜色,这时就可以使用compareTo方法实现:
public static MOUSE_COLOR[] sortMouse(Mouse[] mouse)
{
MOUSE_COLOR[] sColors = new MOUSE_COLOR[mouse.length];

[color=red] List<Mouse> mouseList = Arrays.asList(mouse);
Collections.sort(mouseList);[/color]
for (int i = 0; i < mouse.length; i++)
{
sColors[i] = mouse[i].color;
}
return sColors;

}

关键是红色的两步,第一步将数组转换成List进行处理,使用一个Arrays自带的asList方法进行初始化,将原数组作为构造参数传入。
再使用Collections工具类进行排序,这个地方的sort方法,默认使用的是Mouse类中的compareTo方法,升序和降序按照方法的返回值来决定。

在此例中
    @Override
public int compareTo(Mouse o)
{
if (this.weight > o.weight)
{
return 1;
}
else if (this.weight == o.weight)
{
return 0;
}
else
{
return -1;
}

}

就是按照weight的大小进行升序排列, 如果写成:
if (this.weight > o.weight)
{
return -1;
}
则是进行降序排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值