Java.util.comparator、Java.util.comparable接口使用例子

Java.util.comparable

public class DIParams implements Comparable<DIParams> {
	/**
	 *
	 */
	@Column(id = "id", type = ColumnType.uuid, datatype = "string32")
	private java.lang.String id;

	/**
	 *
	 */
	@Column(id = "name_ch", datatype = "string32")
	private java.lang.String nameCh;

	/**
	 *
	 */
	@Column(id = "name_en", datatype = "string32")
	private java.lang.String nameEn;

	/**
	 *
	 */
	@Column(id = "description", datatype = "string256")
	private java.lang.String description;

	/**
	 *
	 */
	@Column(id = "owner_id", datatype = "string32")
	private java.lang.String ownerId;

	/**
	 *
	 */
	@Column(id = "value_en", datatype = "string128")
	private java.lang.String valueEn;

	/**
	 * 设置
	 */
	public void setId(java.lang.String id) {
		this.id = id;
	}

	/**
	 * 获取
	 */
	public java.lang.String getId() {
		return id;
	}

	/**
	 * 设置
	 */
	public void setNameCh(java.lang.String nameCh) {
		this.nameCh = nameCh;
	}

	/**
	 * 获取
	 */
	public java.lang.String getNameCh() {
		return nameCh;
	}

	/**
	 * 设置
	 */
	public void setNameEn(java.lang.String nameEn) {
		this.nameEn = nameEn;
	}

	/**
	 * 获取
	 */
	public java.lang.String getNameEn() {
		return nameEn;
	}

	/**
	 * 设置
	 */
	public void setDescription(java.lang.String description) {
		this.description = description;
	}

	/**
	 * 获取
	 */
	public java.lang.String getDescription() {
		return description;
	}

	/**
	 * 设置
	 */
	public void setOwnerId(java.lang.String ownerId) {
		this.ownerId = ownerId;
	}

	/**
	 * 获取
	 */
	public java.lang.String getOwnerId() {
		return ownerId;
	}

	/**
	 * 设置
	 */
	public void setValueEn(java.lang.String valueEn) {
		this.valueEn = valueEn;
	}

	/**
	 * 获取
	 */
	public java.lang.String getValueEn() {
		return valueEn;
	}

	//------------------修改----------------
	private static final Map<String, Integer> weight  = new HashMap<String, Integer>(); 
	static{
		//数据源参数权重
		weight.put("ip", 1);
		weight.put("port", 2);
		weight.put("database", 3);
		weight.put("sid", 3);
		weight.put("username", 4);
		weight.put("password", 5);
		//数据对象参数权重
		weight.put("sql", 1);
		weight.put("where", 2);
	};
	
	@Override
	public int compareTo(DIParams o) {
		return weight.get(nameEn)-weight.get(o.getNameEn());
	}
}
使用java.util.Collections 的sort方法对list排序

public void static main(String[] args){		List<DIParams> list = dao.select(diParams);
		List<DIParams> listForShow = new ArrayList<DIParams>();

		int total = list.size();
		int start = (index - 1) * size + 1;
		int end = index * size > total ? total : index * size;
		for (int i = start; i <= end; i++) {
			if ("password".equals(list.get(i - 1).getNameEn())) {
				listForShow.add(passwordHidden(list.get(i - 1)));
				continue;
			}
			listForShow.add(list.get(i - 1));
		}

		Collections.sort(listForShow);
       system.out.print(JSONObject.toJSONString(listForShow);)
}

Java.util.comparator


Interface Comparator<T>
对任意类型集合对象进行整体排序,排序时将此接口的实现传递给Collections.sort方法或者Arrays.sort方法排序。
实现int compare(T o1, T o2);方法,返回正数,零,负数各代表大于,等于,小于。

public class Test {

    private final class CompareName implements Comparator<Milan> {
        boolean is_Ascend;

        public CompareName(boolean b) {
            // TODO Auto-generated constructor stub
            is_Ascend = b;
        }

        @Override
        public int compare(Milan o1, Milan o2) {
            // TODO Auto-generated method stub
            if (is_Ascend)
                return o1.p_Name.compareTo(o2.p_Name);
            else
                return o2.p_Name.compareTo(o1.p_Name);
        }
    }

    private final class CompareId implements Comparator<Milan> {
        boolean is_Ascend;

        public CompareId(boolean b) {
            // TODO Auto-generated constructor stub
            is_Ascend = b;
        }

        @Override
        public int compare(Milan o1, Milan o2) {
            // TODO Auto-generated method stub
            int a, b;
            if (is_Ascend) {
                a = o1.p_Id;
                b = o2.p_Id;
            } else {
                a = o2.p_Id;
                b = o1.p_Id;
            }

            if (a > b)
                return 1;
            else if (a == b)
                return 0;
            else
                return -1;
        }
    }

    public static void main(String[] args) {
        Test t = new Test();

        Milan p1 = new Milan(1, "Dida");
        Milan p2 = new Milan(2, "Cafu");
        Milan p3 = new Milan(3, "Maldini");
        Milan P4 = new Milan(6, "Baresi");
        Milan p5 = new Milan(9, "Inzaghi");
        Milan P6 = new Milan(10, "Costa");

        List<Milan> mList = new ArrayList<Milan>();
        mList.add(p1);
        mList.add(P6);
        mList.add(P4);
        mList.add(p2);
        mList.add(p5);
        mList.add(p3);

        System.out.println("初始顺序");
        System.out.println("姓名  |   号码");
        for (Milan p : mList) {
            System.out.println(p.p_Name + " |   " + p.p_Id);
        }
        System.out.println();
        System.out.println("对号码降序");
        System.out.println("姓名  |   号码");

        Collections.sort(mList, t.new CompareId(false));

        for (Milan p : mList) {
            System.out.println(p.p_Name + " |   " + p.p_Id);
        }
        System.out.println();
        System.out.println("对姓名升序");
        System.out.println("姓名  |   号码");

        Collections.sort(mList, t.new CompareName(true));

        for (Milan p : mList) {
            System.out.println(p.p_Name + " |   " + p.p_Id);
        }
    }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值