黑马程序员技术交流社区

标题: 泛型问题 [打印本页]

作者: 焦亚星    时间: 2013-3-28 00:03
标题: 泛型问题
本帖最后由 焦亚星 于 2013-3-28 23:19 编辑

以下代码将list中元素去重:
  1. public class Exercise1 {

  2.         public static void main(String[] args) {
  3.                 List<String> list = new ArrayList<>();
  4.                 list.add("a");
  5.                 list.add("b");
  6.                 list.add("b");
  7.                 list.add("c");
  8.                 list.add("c");
  9.                 list.add("c");
  10.                
  11.                 clearRepeat2(list);
  12.                
  13.                 System.out.println(list);        // a, b, c
  14.         }
  15.         
  16.         private static <T> void clearRepeat1(List<T> list) {
  17.                 Set<T> set = new LinkedHashSet<>();                // 创建一个Set
  18.                 set.addAll(list);                                                // 把List中的所有元素装入Set, 去掉重复元素
  19.                 list.clear();                                                        // 清空List中所有元素
  20.                 list.addAll(set);                                                // 把Set中的元素装入List
  21.         }
复制代码
以上代码中,private static <T> void clearRepeat1(List<T> list) 中static 后面的<T>有什么作用,什么情况下不需要这个<T>
作者: 张宝    时间: 2013-3-28 00:12
举个例子来说你的钱包里你规定只装钱    那么你去出来的想也不想就是钱,管他是¥还是$不用转换的-->都是钱(确定里面是什么)不用泛型的话 就不规定放什么    那么你取出来的东西就不一定是钱,这样你就要转换了,那要是石头的话你要转换成钱就错了(不确定里面到底是什么)
作者: _王涛    时间: 2013-3-28 00:23
      这个T就是你存入List中的类型  比如说  List<String>  那么你的List中放的就String类型;
      若在类定义处声明的泛型,则用来指定这个类用来处理的对象类型,这个类中定义的所有方法,只要使用了类定义处声明的泛型参数,则都必须使用同一个对象,否则,编译就会出现错误 。
      如果仅仅是在方法声明处定义泛型,则表示这个方法的参数或返回值使用什么类型的数据。不再需要强制转型;
      泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
作者: 陈丽莉    时间: 2013-3-28 00:29
请及时追问,或将帖子分类改成【已解决】哦~
作者: 焦亚星    时间: 2013-3-28 00:40
这个方法没有返回值,为什么还要加个<T>啊
作者: 焦亚星    时间: 2013-3-28 00:42
参数中List<T> list已经限定了T,前面再加个T又是什么意思
作者: 陈丽莉    时间: 2013-3-28 18:34
焦亚星 发表于 2013-3-28 00:40
这个方法没有返回值,为什么还要加个啊

“追问” 是点击特定回复楼层下面那个“回复”,不是回复自己的帖子哦~  现在这样,别人不进来这个帖子是看不到你的追问的~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2