黑马程序员技术交流社区
标题:
泛型问题
[打印本页]
作者:
焦亚星
时间:
2013-3-28 00:03
标题:
泛型问题
本帖最后由 焦亚星 于 2013-3-28 23:19 编辑
以下代码将list中元素去重:
public class Exercise1 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("c");
list.add("c");
clearRepeat2(list);
System.out.println(list); // a, b, c
}
private static <T> void clearRepeat1(List<T> list) {
Set<T> set = new LinkedHashSet<>(); // 创建一个Set
set.addAll(list); // 把List中的所有元素装入Set, 去掉重复元素
list.clear(); // 清空List中所有元素
list.addAll(set); // 把Set中的元素装入List
}
复制代码
以上代码中,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