黑马程序员——java——自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序

自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

//自定义一个比较器
class Mycompare implements Comparator
{

	@Override
	public int compare(Object o1, Object o2) {
		// TODO Auto-generated method stub
		MinStudent ms1=(MinStudent )o1;
		MinStudent ms2=(MinStudent )o2;
		int i=ms1.getName().compareTo(ms2.getName());
		if(i==0)
			return ms1.getAge()-ms2.getAge();
		return i;
	}
	}
public class MyCompareDemos {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		TreeSet ts = new TreeSet(new Mycompare());
		ts.add(new MinStudent("ccc",22));
		ts.add(new MinStudent("ddd",22));
		ts.add(new MinStudent("aaa",21));
		ts.add(new MinStudent("dad",23));
		ts.add(new MinStudent("fff",25));
		ts.add(new MinStudent("sss",22));
		ts.add(new MinStudent("jjj",20));
		Iterator it = ts.iterator();
		while(it.hasNext())
		{
			MinStudent ms = (MinStudent)it.next();
			System.out.println(ms.toString());
		}
	}

}
class MinStudent implements Comparable
{

	public int getName;
	private String name ;
	private int age;
	MinStudent(String name ,int age)
	{
		this.name =  name ;
		this.age=age;
	}
	public int getAge()
	{
		return age;
	}
	public String getName()
	{
		return name;
	}
	public String toString()
	{
		return "name:"+name +" --- age"+age;

	}

	@Override
	public int compareTo(Object o) {
		//
		MinStudent s =(MinStudent) o;
		//先按照年龄排序
		int i=this.getAge()-s.getAge();
		if(i ==0)
			return this.getName().compareTo(s.getName());
		return i;
	}

	}

未使用比较器前,集合中的元素顺序是》

使用比较器后:

时间: 2024-11-07 13:47:19

黑马程序员——java——自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序的相关文章

黑马程序员——java——自定义一个比较器,按照字符串的长度升序的方法来比较字符串进行储存

自定义一个比较器,按照字符串的长度升序的方法来比较字符串进行储存 import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; class Mycompara implements Comparator { //自定义一个比较器,按照字符串的长度来比较字符串,然后对其进行储存 //如果字符串的长度一样长了后,再依据字符内容进行排序 public int compare(Object o1, Ob

黑马程序员----java基础--JDK新特性和集合其他类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.JDK1.5新特性 JDK升级的三大原因: (1).提高代码的复用性 (2).提高代码的安全性 (3).简化书写 1.泛型机制 JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. (1).泛型概念 泛型是根据数组的思想设计出来的,因为数组一旦建立成功就已经明确了数据类型,所以可根据数组思想给集合指定类型. 如:数组:int[] arr=new int[4]; 而集合的泛

黑马程序员——java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序

获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class Test5 { public static void main(String[] args) th

黑马程序员——java——对一个字符串中的数值进行从小到大的排序

对一个字符串中的数值进行从小到大的排序 例如: String s = "8 96 88 58 44 52 12 13 39 96 6"; public class SortIntToStringDemo { // 对一个字符串中的数值进行从小到大的排序. public static void main(String[] args) { String s = "8 96 88 58 44 52 12 13 39 96 6"; //调用自定义方法将字符串中的数字进行排序

黑马程序员——java——模拟一个字符串中的trim方法去掉一个字符串两端的空格

模拟一个字符串中的trim方法去掉一个字符串两端的空格 public class StingTrimDemo { //模拟一个trim方法, 去掉一个字符串两边的空格], public static void main(String[] args) { // TODO Auto-generated method stub String s = " my java "; System.out.println("未去空格前的字符串+++:[ "+s+" ]&q

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员---Java多线程

---------------------- Android开发.java培训.期待与您交流! ---------------------- 线程与进程是程序运行中体现的两个名词,它包含这不同的程序域.进程指的是一个正在运行的程序,如:360,QQ运行时就是不同的两个进程.当你打开windows任务管理器时,看到的每个进程就是此时windows中正在运行的程序.线程则就是进程中的一个个独立的控制单元,线程控制着进程的执行,也就是说每个正在运行的程序中就包括着很多的线程. 主线程:Java虚拟机运

黑马程序员——java基础——集合(Collection)

 黑马程序员--java基础--集合(Collection) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 集合框架的构成及分类,如下图: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 3.

黑马程序员--Java基础--01基本概念

1.Java的三大技术架构 JAVAEE(Java Platform Enterprise Edition):  开发企业环境下的应用程序,主要针对web程序开发: JAVASE(Java Platform Standard Edition): 完成桌面应用程序的开发,是其他两者的基础 JAVAME(Java Platform Micro Edition): 开发电子消费产品和嵌入式设备,如手机中的程序 我对三大技术构架理解 1.三大技术是指哪三大技术呢? 答:三大技术分别指JAVAEE,JAV