黑马程序员技术交流社区
标题:
自定义比较器排序和泛型定义
[打印本页]
作者:
z13561291
时间:
2015-11-16 17:01
标题:
自定义比较器排序和泛型定义
import java.util.*;
/*
泛型:JDK1.5版本出现的新特性,用于解决安全问题,是一个安全机制
好处:
1.将运行时期出现问题ClassCastException,转移到了编译时期
方便程序员解决问题,让运行事情问题减少,安全
2.避免了强制转换麻烦
泛型格式:通过<>来定义要操作的引用数据类型
在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架很常见
只要见到<>就要定义泛型
其实<>就是用来接收类型的
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可
equals方法必须要强转 因为没有泛型,无法重写
*/
class GenericDemo2
{
public static void main(String[] args)
{
TreeSet<String> ts = new TreeSet<String>(new MyCompare()); //将比较器作为参数传入TreeSet
ts.add("asd");
ts.add("asasd");
ts.add("aqweqesd");
ts.add("asasd");
ts.add("abwdaaaa");
ts.add("acqwed");
ts.add("abwdaaaa");
Iterator<String> it = ts.iterator(); //迭代器
while(it.hasNext()) //判断是否有内容
{
String s = it.next();
System.out.println(s);
}
}
}
class MyCompare implements Comparator<String> //自定义比较器
{
public int compare(String o1,String o2){
//从小到大自然排序,要倒序的话,只要o1和o2的顺序调换即可
int num = new Integer(o1.length()).compareTo(new Integer(o2.length()));//比较后返回-1,0,1
if (num == 0)
{
return o1.compareTo(o2); //长度相同时比较内容
}
return num; //返回 1为排在上面,0则为重复剔除,-1为排在下面
}
}
复制代码
当使用泛型后不会出现
注: GenericDemo.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2