entrySet()里面保存的并不是Armor,你想,HashMap里的Armor是有可能重复的,怎么能把他们的集合转成set呢?

解决方案 »

  1.   

    entrySet()里放的是Map.Entry
    你想要的是Value的set吧,应该用armors.Values.iterator()
      

  2.   

    换成了armors.Values.iterator()可以用,谢谢另一个问题,
    armors里是有重复,我放入Set中的另一目的也是为了实现这样一个目的:如果1个player身上有多个重复的armor,那么只能获取1个armor的defence.这样的话我把armors.values()放入Set会消除重复元素吗?但是我这样写:
     public int getDefence() {
        Set values = (Set)armors.values();
        for(Iterator iter = values.iterator(); iter.hasNext(); ) {
          Armor armor = (Armor)iter.next();
          defence += armor.getDefence();
        }
        return defence;
      }
    仍然有类转型异常
      

  3.   

    to whyxx(永远成不了高手) 
    ========================
    value能是set吗?
      

  4.   

    Collection values = armors.values();
      

  5.   

    //如果你非要用entrySet...... 
    public int getDefence() {
        Set values = armors.entrySet();
        for(Iterator iter = values.iterator(); iter.hasNext(); ) {
          Map.EntrySet entry=(Map.EntrySet)iter.next();
          Armor armor = (Armor)entry.getValue();
          defence += armor.getDefence();
        }
        return defence;
      }