使用TreeSet 进行排序

  1. TreeSet特点:因为TreeSet实现了Set接口,所以,数据元素是不可以重复的,但是可以排序。
  2. HashSet接口:必须重写 equals方法和hashcode()方法。只要是排序,无非是返回-1,0,1。
  3. 当返回0时,说明对象相同,可以进行去除操作。
  4. 首先创建一个科目javabean,提供无参数构造器和带参数构造器。重写toString()
/**
 * 学习的科目
 * 
 * @author Administrator
 *
 */
public class Subject {
	// 名字
	private String name;
	// 学费
	private int tuition;
	// 书费
	private int bookFee;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getTuition() {
		return tuition;
	}

	public void setTuition(int tuition) {
		this.tuition = tuition;
	}

	public int getBookFee() {
		return bookFee;
	}

	public void setBookFee(int bookFee) {
		this.bookFee = bookFee;
	}

	public Subject(String name, int tuition, int bookFee) {
		super();
		this.name = name;
		this.tuition = tuition;
		this.bookFee = bookFee;
	}

	public Subject() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("姓名:" + this.name + ",");
		sb.append("学费:" + this.tuition + ",");
		sb.append("书费:" + this.bookFee).append("\n");
		return sb.toString();
	}

}
package org.hz.collection_sort.refType;

import java.util.TreeSet;

public class SubjectBookfeeSort {
	public static void main(String[] args) {
		Subject subject1 = new Subject("信息工程", 15600, 400);
		Subject subject2 = new Subject("考古发掘", 21000, 1000);
		Subject subject3 = new Subject("工程管理", 18800, 300);
		Subject subject4 = new Subject("畜牧兽医", 17600, 50);
		Subject subject5 = new Subject("园艺技术", 19800, 500);
		// TreeSet特点是 元素可以排序,而且不能重复,所以排序之后不要进行修改操作。
		// 排序结果后,如果发现打印出来的结果少了一个或者多个,那么少了几条数据,就是有几个重复的。只显示第一个加入treeSet中的元素,其他的都不显示
		TreeSet<Subject> treeSet = new TreeSet<Subject>(new java.util.Comparator<Subject>() {
			// 根据书费进行降序排序  排序完成之后,不要修改里面的内容,否则可能会导致数据重复问题,但是顺序还是没有变化的。
			@Override
			public int compare(Subject o1, Subject o2) {
				return -(o1.getBookFee() - o2.getBookFee());
			}
		});
		treeSet.add(subject5);
		treeSet.add(subject1);
		treeSet.add(subject2);
		treeSet.add(subject3);
		treeSet.add(subject4);

		System.out.println(treeSet);
	}
}

输出结果:

[姓名:考古发掘,学费:21000,书费:1000
, 姓名:园艺技术,学费:19800,书费:500
, 姓名:信息工程,学费:15600,书费:400
, 姓名:工程管理,学费:18800,书费:300
, 姓名:畜牧兽医,学费:17600,书费:50
]

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值