泛型和TreeSet的应用(一)

package cn.us;
import java.util.Iterator;
import java.util.TreeSet;
//泛型和TreeSet的应用(一)
//存入TreeSet集合中的元素是无序的,但有方法给它排序
//排序方式一:让元素自身具备比较性,需元素实现Comparable接口
//核心:重写Comparable接口的方法compareTo(Object obj)
//if (tea.age == this.age) //年纪相同时再按照姓名排序!!!
//         return this.name.compareTo(tea.name);
//因为String也类实现了此接口,当然就可以调用compareTo()方法
class Teacher implements Comparable {
	private int age;
	private String name;
	public Teacher(int age, String name) {
		this.age = age;
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public String getName() {
		return name;
	}
	@Override
	public String toString() {
		return "Teacher [age=" + age + ", name=" + name + "]";
	}
	@Override
	public int compareTo(Object obj) {//按照年纪排序
		Teacher tea = (Teacher) obj;
		if (tea.age < this.age) {
			return -1;
		}
		if (tea.age == this.age) {//年纪相同时再按照姓名排序!!!核心
			return this.name.compareTo(tea.name);
		}
		if (tea.age > this.age) {
			return 1;
		}
		return 0;
	}

}

public class Test4 {
  public static void main(String[] args) {
        Teacher teac1=new Teacher(25, "lim");
        Teacher teac2=new Teacher(26, "uim");
        Teacher teac3=new Teacher(55, "zim");
        Teacher teac4=new Teacher(55, "mim");
        Teacher teac5=new Teacher(55, "cim");
        TreeSet<Teacher> treeSet=new TreeSet<Teacher>();
        treeSet.add(teac1);
        treeSet.add(teac2);
        treeSet.add(teac3);
        treeSet.add(teac4);
        treeSet.add(teac5);
        Iterator<Teacher> iterator=treeSet.iterator();
        while(iterator.hasNext()){
        	//Teacher t=(Teacher) iterator.next();
        	Teacher t=iterator.next();//避免了上句的强转
        	System.out.println(t.getName()+"的年纪是"+t.getAge());
        }
  }
}
时间: 2024-08-11 03:30:34

泛型和TreeSet的应用(一)的相关文章

泛型和TreeSet的应用(二)

package cn.us; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; //泛型和TreeSet的应用(二) //TreeSet实现排序的第二种办法:让容器本身实现排序的功能 //因为TreeSet有一构造方法:TreeSet tr=new TreeSet(Comparator c); //其参数为实现了Comparator接口的类 // //总结: //在方法一中,要让对象

关于java泛型和Object

问题描述 再网上下的一个ssh框架例子,对里面泛型的使用感到很困惑我简单的描述一下publicinterfaceBaseDao<T,IDextendsSerializable>{publicabstractvoidsave(Tt);}publicclassBaseDaoImpl<T,IDextendsSerializable>implementsBaseDao<T,ID>{publicvoidsave(Tt){this.getSession().save(t);}}看到

Dart基础-泛型和库

泛型 如果你看过API文档的基本类型数组和列表,你会发现实际上所有都是泛型,使用泛型可以提高代码的可读性 var names = new List<String>(); names.addAll(['Seth', 'Kathy', 'Lars']); //检查模式编译失败,生产模式编译成功 names.add(42); 使用泛型的另一个原因是减少代码重复,泛型可以创建多类型共享的接口,同时还能在检查模式早期预警,假如您创建一个接口缓存对象 abstract class ObjectCache

Visual Basic和C#功能对比

visual 首先声明,此处仅作语言方面的对比,在.NET生产力上,两者没有区别.进行这个对比是为了澄清对Visual Basic和C#功能错误的认识和流言.以下所有区别都是经过较为深刻的研究得出的,相比一些常见的对比来讲更有科学性 下面先对比Visual Studio .NET 2003中,两种语言功能的对比.*表示对方语言中没有这项功能,但是可以用别的语法在IL级别实现完全同样的功能.注意,本次比较只选择有意义的功能,某些功能,如循环.分支语句等传统功能不在比较之列.同时,VB因兼容老版本而

F#入门:使用.NET Framework中的函数式编程技术

本文讨论: 安装 F# F# 语言基础 .NET 互操作性 异步 F# 本文使用了以下技术: .NET Framework, F# 目录 为什么要使用 F#? 安装 F# 您好,F# Let 表达式 关键字 For 管道 F# 也能够处理对象 异步 F# 与 F# 合作 作 为 Microsoft .NET Framework 家族的新成员,F# 提供类型安全.性能以及类似脚本语言的工作能力,所有这些都是 .NET 环境的一部分.此函数式语言由 Microsoft 研究院的 Don Syme 发

体验Visual C++.NET 2005中的STL

为了更好的使STL适合.NET开发,Visual C++产品组,在2005版的Visual C++中重新设计了STL,并命名为STL.NET,从Beta1版本的产品中开始提供. 在STL.NET的设计中,STL的实现使用了CLI泛型和C++模版机制.2005版本的C++将加入C++/CLI动态编程的支持,应当会成为最能够满足程序员设计的语言. 给予程序员丰富的选择 总共有三个容器库可供程序员用于操作CLI类型,这三个容器库建于三种类型参数化模型之上. 原先元素类型存储的Systems::Coll

使用泛型以及通用方法将XML与OBJECT进行相互转换

过年的这段时间一直没有闲着,总体来说可以分为以下2个部分的学习. 1:ORMCodeHelper的参考 与学习. 2:MVC3的学习. 对于ORMCodeHelper(Keny的),完全的采用插件式开发,即插即用 ,个人感觉还是比较爽的,架构不错.它包括了SQL SERVER 2000,SQL SERVER 2005以及ORACLE的相关C#代码 的生成.比哥一年前写的那个牛多了,哈哈,哥去年乱写了个网页版的 (http://www.cnblogs.com/jasenkin/archive/20

C++/CLR泛型与C++模板之间的对比

Visual Studio 2005把泛型编程的类型参数模型引入了微软.NET框架组件.C++/CLI支持两种类型参数机制--通用语言运行时(CLR)泛型和C++模板.本文将介绍两者之间的一些区别--特别是参数列表和类型约束模型之间的区别. 参数列表又回来了 参数列表与函数的信号(signature)类似:它标明了参数的数量和每个参数的类型,并把给每个参数关联一个唯一的标识符,这样在模板定义的内部,每个参数就可以被唯一地引用. 参数在模板或泛型的定义中起占位符(placeholder)的作用.用

泛型--集合接口

9.4 集合接口 .NET Framework为集合的枚举和对比提供了两组标准接口:传统的(非类型安全)和新的泛型类型安全集合.本书只聚焦于新的,类型安全的集合接口,因为它更优越. 您可以声明一些指定了类型的ICollection来取代实际类型(如int或string),以用于接口声明中的泛型类型(<T>). C++程序员需要注意:C#泛型和C++中的模板在语法和用法上都很相似.但是,因为泛型在运行期为其指定类型进行扩展,JIT编译器可以为它们的不同的实例共享一段代码,从而使得在使用C++模板