二维数组的排序

对于需要对二维数组按某一行按升序排列,若那一行相同,则按另一行的升序排列。

方法一:定义一个类

以下为木棍加工问题,l为木棍长度,w为木棍重量,定义一个木棍类,保存木棍的长和重量。

class Wood implements Comparable<Wood>{
	int l;
	int w;
	int judge = 0; 
	public Wood(int l,int w){
		this.l = l;
		this.w = w;
	}
	
	//重写比较方法
	public int compareTo(Wood wood) {
		if(l == wood.l){
			return (w > wood.w)? 1:-1;
		}
		return (l > wood.l)? 1:-1;
	}
	
Scanner in=new Scanner(System.in);
int n = in.nextInt();   //一共有n根木头
Wood[] woods = new Wood[n];
for(int j = 0; j < n; j++){
	woods[j] = new Wood(in.nextInt(),in.nextInt());
}
Arrays.sort(woods);

对woods调用Arrays.sort()即可完成排序。

方法二:Collection.sort()

Collections.sort()使用该方法实际是重写Comparator接口的compare方法实现排序:
 
//传入参数list集合,Comparator接口 T:list的元素类型

Collections.sort(list, new Comparator<T>() {
    @Override
    public int compare(T o1, T o2) {
        //比较两个数大小,返回1则调换顺序,返回-1不换
        int i = o1.get("....") - o2.get("....");
        // i > 0,返回1则降序,返回-1则升序
        if (i > 0) {
            return 1;
        }
            return -1;
        }
     });
Arrays.sort(a, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0]==o2[0]) return o1[1]-o2[1];
return o1[0]-o2[0];
}
});
//其中o1[1]-o2[1]表示对于第二个元素经行升序排序如果为o2[1]-o1[1]则表示为降序。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值