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 重新编译。
|
|