首先建立一个老鼠实体,有重量和颜色的属性:
然后需求按照老鼠的重量排序,排序之后输出它的颜色,这时就可以使用compareTo方法实现:
关键是红色的两步,第一步将数组转换成List进行处理,使用一个Arrays自带的asList方法进行初始化,将原数组作为构造参数传入。
再使用Collections工具类进行排序,这个地方的sort方法,默认使用的是Mouse类中的compareTo方法,升序和降序按照方法的返回值来决定。
在此例中
就是按照weight的大小进行升序排列, 如果写成:
if (this.weight > o.weight)
{
return -1;
}
则是进行降序排序。
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;
}
则是进行降序排序。