2014-12-08 11 views
5

Pracuję teraz nad projektem Java i mam klasę, którą utworzyłem o nazwie DistanceQueue. Jest podpis jest przezNie można dodać pary (int, double) do HashMap <Integer, Double>

public class DistanceQueue<Integer> extends PriorityQueue<Integer> 

W tej klasie, nie jest to metoda

public boolean add(int v) 

który dodaje parę klucz-wartość (v, Double.MAX_VALUE) do HashMap nazywa odległościach, co jest w klasa DistanceQueue. Jednak wnętrze add (int v) po wpisaniu

distances.put(v, Double.MAX_VALUE); 

pojawia się następujący błąd:

DistanceQueue.java:98: error: no suitable method found for put(int,double) 
      distances.put(v, Double.MAX_VALUE); 
        ^
    method HashMap.put(Integer,Double) is not applicable 
     (actual argument int cannot be converted to Integer by method invocation conversion) 
    where Integer is a type-variable: 
    Integer extends Object declared in class ShortestPaths.DistanceQueue 
1 error 

Czy ktoś wie dlaczego ja dostaję ten błąd? Myślałem, że Java automatycznie konwertuje między int i Integer dla ciebie. Czy istnieje prosty sposób, aby to naprawić?

Dzięki!

+0

Co jest 'distances'? –

+0

odległości to HashMap. Został utworzony z HashMap distance = new HashMap () – Ryan

+0

Z pewnością już widziałem duplikaty tego pytania, ale są one naprawdę trudne do wyszukania, ponieważ mają zazwyczaj losowe opisy problemów które nie wskazują na rzeczywisty problem. – 5gon12eder

Odpowiedz

19

Używasz Integer jako nazwy parametru typu, który ukrywa the java.lang.Integer.

public class DistanceQueue<Integer> extends PriorityQueue<Integer> 
          ^^^^^^^ 

Należy prawdopodobnie tylko kropla parametr typu:

public class DistanceQueue extends PriorityQueue<Integer> 
+0

Jak więc zmienić moje podejście, aby móc wstawić do HashMap? – Ryan

+2

'public class DistanceQueue rozszerza PriorityQueue ' –

Powiązane problemy