一个可以随意排序的结构

有一个场景,需要把一个乱序的列表按三个字段排序

用的地方:

public class A {
	//每一个B是sheet里的一行
	ArrayList<B> list = new ArrayList<B> (); 
	
	public static void main(String[] s ) {
		A a = new A();
		a.list.add(new B("a","c","子女"));
		a.list.add(new B("a","c","主被"));
		a.list.add(new B("a","c","子女"));
		//a.list.add(new B("e","c","子女"));
		//a.list.add(new B("e","c","主被"));
		
		System.out.println(a.list);
		Collections.sort(a.list);
		System.out.println(a.list);
	}
}

定义:

public class B implements Comparable<B> {

	String[] params;
	
	public B(String a , String b ,String c) {
		this.params = new String[]{"","",""};
		this.params[0] =a;
		this.params[1] =b;
		this.params[2] =c;
	}
	public String[] getParams() {
		return params;
	}
	public void setParams(String[] params) {
		this.params = params;
	}
	//重写compareTo函数
	@Override
	public int compareTo(B o) {
		
		String this_zhubeiName_ID =   this.getParams()[0] + this.getParams()[1];
		String other_zhubeiName_ID =  o.getParams()[0] + o.getParams()[1];
		
		if (this_zhubeiName_ID.equals(other_zhubeiName_ID)) { //如果是同一家庭,比较 与主被关系
			if (this.getParams()[2].equals( "主被") &&  ! o.getParams()[2].equals("主被")) {
				return -1;
			}else if (!this.getParams()[2].equals( "主被") && o.getParams()[2].equals("主被")) {
				return 1;
			}else {
				return 0;
			}
		}else {
			return this_zhubeiName_ID.compareTo(this_zhubeiName_ID);
		}
	}
	//重写toString, 好用来看
	@Override
	public String toString() {
		return this.params[0]+"_"+this.params[1]+"_"+this.params[2];
		
	}
}

两处的重写,基础才是最重要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值