泛型和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接口的类
//
//总结:
//在方法一中,要让对象本身具有可比性,所以implements Comparable(形容词)
//在方法二中,要让容器本身实现排序的功能,即使其变成一个可排序的容器
//所以采用了TreeSet treeSet=new TreeSet(new tempComparator());
//tempComparator类实现了implements Comparator(名词)
//利用泛型和TreeSet实现按照数组的长度进行排序
class ComTest implements Comparator<String> {
	@Override
	public int compare(String arg0, String arg1) {
		if (arg0.length() < arg1.length()) {
			return -1;
		}
		if (arg0.length() == arg1.length()) {
			return 0;
		} else {
			return 1;
		}
	}
}

public class Test8 {
   public static void main(String[] args) {
         TreeSet<String> treeSet=new TreeSet<String>(new ComTest());
         treeSet.add("as");
         treeSet.add("afs");
         treeSet.add("affs");
         treeSet.add("aasds");
         for(Iterator<String> iter=treeSet.iterator();iter.hasNext();){
        	 System.out.println(iter.next().length());
         }
   }
}
时间: 2024-09-24 02:03:11

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

泛型和TreeSet的应用(一)

package cn.us; import java.util.Iterator; import java.util.TreeSet; //泛型和TreeSet的应用(一) //存入TreeSet集合中的元素是无序的,但有方法给它排序 //排序方式一:让元素自身具备比较性,需元素实现Comparable接口 //核心:重写Comparable接口的方法compareTo(Object obj) //if (tea.age == this.age) //年纪相同时再按照姓名排序!!! // ret

关于java泛型和Object

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

TreeSet实现排序(二)

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

Dart基础-泛型和库

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

C#笔记

 一.变量与表达式        1.变量第一个字母必须是字符.下划线或@,其后就可以字符.数字.下划线.        2.字面值        (1)double为浮点默认字面值,在给float或decimal浮点型赋值时要加f/F或m/M.        3.表达式        Char变量实际存储的是数字,所以把两个char变量加在一起会得到一个数字. 二.流程控制               2.Switch        在C#中,执行完一个Case语句后,不能进入下一个Cas

Kotlin 初体验:主要特征与应用

Kotlin 是一种针对 Java 平台的新编程语言.它简洁.安全.务实,并且专注于与 Java 代码的互操作性.它几乎可以用在现在Java 使用的任何地方 :服务器端开发.Android 应用,等等.本文我们将详细地探讨 Kotlin 的主要特征. 本文选自<Kotlin实战>. Kotlin初体验 让我们从一个小例子开始,来看看 Kotlin 代码长什么样子.这个例子定义了一个 Person 类来表示"人",创建一个"人"的集合,查找其中年纪最大的人

方法返回类型直接用object合理吗?

问题描述 假如我有一个方法获取回来的数据可能是int,string或者boolean类型的,如果我把这个方法的返回类型固定,那么就要写publicintgetInt(),publicStringgetString(),publicbooleangetBoolean()三个方法,但是如果我把返回类型写成object,那么我只要写一个ObjectgetObject方法就可以了,使用的时候都知道需要什么类型,比如我需要返回int类型,那么我就写成inti=(Integer)getObject()就可以

泛型方面的问题啊又那位大侠比较了解??帮忙解决一下啊.................

问题描述 关于泛型和nullable类型大家说一下? 解决方案 解决方案二:呵呵...解决方案三:Nullable类型,允许用它定义包含null值(即空值)的数据类型泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性.它允许程序员将一个实际的数据类型的规约延迟至泛型的实例被创建时才确定.泛型为开发者提供了一种高性能的编程方式,能够提高代码的重用性,并允许开发者编写非常优雅的解决方案.解决方案四:顶解决方案五:顶

遍历list的不同方法有哪些

问题描述 如题最好全一点,至少多于4种 解决方案 解决方案二: List<Integer>list=newArrayList<Integer>();list.add(1);list.add(2);//method1for(inti=0;i<list.size();i++){System.out.println(list.get(i));}//method2for(Integernum:list){System.out.println(num);}//method3for(It