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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈琦 中级黑马   /  2012-10-14 10:35  /  1408 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;
  2. class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Map<String,String> m = new HashMap<String,String>();
  7.                 m.put("1","beijing");
  8.                 m.put("2","tianjin");
  9.                 m.put("3","hubei");
  10.                 Set s = m.keySet();
  11.           //Set<String> s = m.keySet();既然Map m已经制定了泛型,Set为什么要加泛型?
  12.                 Iterator it = s.iterator();
  13.           //Iterator it1<String> = s.iterator();还有这里
  14.                 while(it.hasNext()) {
  15.                         System.out.println(it.next());
  16.                 }
  17.         }
  18. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 杨华东 于 2012-10-14 10:53 编辑

跟你说   
1,set集合里泛型是不确定的 当然要指定一哈。
2,Iterator是set集合封装的内部类它要操作的元素与Set集合操作的元素必须一致,所以也要指定一哈。

你想想  被封装的内部类 总不会操作set集合以外的元素吧???简单的道理  希望你明白哈    加油
回复 使用道具 举报
public interface Map<K,V>  这是Map接口的声明~

/**
     * Returns a {@link Set} view of the keys contained in this map.
     * The set is backed by the map, so changes to the map are
     * reflected in the set, and vice-versa.  If the map is modified
     * while an iteration over the set is in progress (except through
     * the iterator's own <tt>remove</tt> operation), the results of
     * the iteration are undefined.  The set supports element removal,
     * which removes the corresponding mapping from the map, via the
     * <tt>Iterator.remove</tt>, <tt>Set.remove</tt>,
     * <tt>removeAll</tt>, <tt>retainAll</tt>, and <tt>clear</tt>
     * operations.  It does not support the <tt>add</tt> or <tt>addAll</tt>
     * operations.
     *
     * @return a set view of the keys contained in this map
     */
    Set<K> keySet();  //这是Map接口里面 keySet方法的声明


我觉得是否要写泛型只和函数的声明有关,函数返回值里面带了 <K>,如果不写泛型会有警告,但是不会报错。
而且~如果  Map<K,V>  泛型的 K 和  Set<K> keySet() 的 K 类型 不一致编译是不会过的~

下面的iterator是一个道理




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