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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李征雪 中级黑马   /  2012-4-20 09:31  /  1347 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李征雪 于 2012-4-20 09:35 编辑
  1. import java.util.*;
  2. class DemoGeneric
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList al = new ArrayList();
  7.                 al.add("hello1");
  8.                 al.add("hello2");
  9.                 al.add("hello3");
  10.                 al.add("hello4");

  11.                 Iterator it = al.iterator();

  12.                 while (it.hasNext())
  13.                 {
  14.                         System.out.println(it.next());
  15.                 }
  16.         }
  17. }
复制代码
这段代码编译无警告;
  1. import java.util.*;
  2. class DemoGeneric
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 TreeSet al = new TreeSet();
  7.                 al.add("hello1");
  8.                 al.add("hello2");
  9.                 al.add("hello3");
  10.                 al.add("hello4");

  11.                 Iterator it = al.iterator();

  12.                 while (it.hasNext())
  13.                 {
  14.                         System.out.println(it.next());
  15.                 }
  16.         }
  17. }
复制代码
把ArrayList换成TreeSet后则会有警告;
  1. import java.util.*;
  2. class DemoGeneric
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 TreeSet<String> al = new TreeSet<String>();
  7.                 al.add("hello1");
  8.                 al.add("hello2");
  9.                 al.add("hello3");
  10.                 al.add("hello4");

  11.                 Iterator<String> it = al.iterator();

  12.                 while (it.hasNext())
  13.                 {
  14.                         System.out.println(it.next());
  15.                 }
  16.         }
  17. }
复制代码
使用TreeSet<String>和Iterator<String>编译后警告消失;
我查看了下API,在API中:
java.util.ArrayList<E>

java.util.TreeSet<E>
两个集合都是带有泛型的,为什么用ArrayList就没有警告?



评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览

ArrayList还是数组,他属于弱类型集合而泛型集合属于强类型集合

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
这其实涉及到set和list的区别:

set只有remove(Object o)方法 而list又remove(int index)和remove(Object o)两个方法,所以set只能对i进行自动装箱后和set中得元素比较符合条件后则删除,而list则执行了remove(int index)方法 是两个完全不同得方法 至于为什么执行这个方法而没有执行remove(Object o)方法是因为传的参数是int类型,java有符合条件得方法所以不会自动将其进行装箱成Object对象



评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马