A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© z13561291 中级黑马   /  2015-11-16 17:01  /  294 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
/*
泛型:JDK1.5版本出现的新特性,用于解决安全问题,是一个安全机制

好处:
1.将运行时期出现问题ClassCastException,转移到了编译时期
        方便程序员解决问题,让运行事情问题减少,安全
2.避免了强制转换麻烦

泛型格式:通过<>来定义要操作的引用数据类型
在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架很常见
只要见到<>就要定义泛型
其实<>就是用来接收类型的
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可

equals方法必须要强转 因为没有泛型,无法重写
*/
  1. class GenericDemo2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 TreeSet<String> ts = new TreeSet<String>(new MyCompare()); //将比较器作为参数传入TreeSet
  6.                 ts.add("asd");                                                                                          
  7.                 ts.add("asasd");
  8.                 ts.add("aqweqesd");
  9.                 ts.add("asasd");
  10.                 ts.add("abwdaaaa");
  11.                 ts.add("acqwed");
  12.                 ts.add("abwdaaaa");

  13.                 Iterator<String> it = ts.iterator();                                        //迭代器
  14.                         while(it.hasNext())                                                                        //判断是否有内容
  15.                                 {
  16.                                         String s = it.next();
  17.                                         System.out.println(s);
  18.                                 }
  19.         }
  20. }
  21. class MyCompare implements Comparator<String>                                        //自定义比较器
  22. {
  23.         public int compare(String o1,String o2){
  24.         //从小到大自然排序,要倒序的话,只要o1和o2的顺序调换即可
  25.         int num = new Integer(o1.length()).compareTo(new Integer(o2.length()));//比较后返回-1,0,1
  26.                 if (num == 0)
  27.                 {
  28.                         return o1.compareTo(o2);  //长度相同时比较内容
  29.                 }
  30.                 return num;                                                //返回 1为排在上面,0则为重复剔除,-1为排在下面
  31.         }
  32.        
  33. }
复制代码

当使用泛型后不会出现
注: GenericDemo.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马