Collections Unverständliches Verhalten...

  • Themenstarter Themenstarter Spacerat
  • Beginndatum Beginndatum
S

Spacerat

Gast
Folgendes:
Java:
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public final class CollectionTest
{
  public static void main(String[] args)
  {
    Map<Integer, Collection<Double>> anyMap = new HashMap<Integer, Collection<Double>>();
    for(Entry<Integer, Collection<Double>> entry : anyMap.entrySet()) {
      for(Collection<Double> collection : entry.getValue()) {
        //         error? what's going on here? ^^
      }
    }
  }
}
An der gekennzeichneten Stelle zeigt mir Eclipse einen Fehler an, aber warum nur? Schliesslich ist der Rückgabewert von "getValue()" doch "Collection<Double>", dass jedenfalls zeigt Eclipse an, wenn man "collection" als "Object" definiert. Also, was zum Geier läuft hier schief?

mfg Spacerat
 
Mhm? Denkfehler? entry.getValue() liefert dir die Collection von Double das ist schon richtig, aber du benutzt doch hier die for-each?! Dann hast du dort eben autpomatisch dann ein Double! Bei List<Double> und for-each schreibst du ja auch for(Double d : list) ....???:L
 
Naja, macht schon Sinn. Value von Entry IST eine Collection und enthält keine Collection von Collection. Du würdest ja sowas wie
Java:
Collection<Double> col = entry.getValue();
for (Double dbl:col) {
  //machwas
}
machen.
Also sollte es nicht
Code:
for(Collection<Double> collection:)
heißen, sondern
Code:
for(Double singleDouble: entry.getValue())
 
Daaaaannke... natürlich... Manchmal sieht man den Wald vor lauter Bäumen nicht. 😉 Autschn
 

Zurück
Oben