2014-12-08 14 views
5

Tôi đang làm việc trên một dự án Java ngay bây giờ và tôi có một lớp mà tôi đã tạo được gọi là DistanceQueue. Nó chữ ký được cho bởiKhông thể thêm cặp (int, double) vào HashMap <Integer, Double>

public class DistanceQueue<Integer> extends PriorityQueue<Integer> 

Trong lớp này, có một phương pháp

public boolean add(int v) 

mà thêm cặp khóa-giá trị (v, Double.MAX_VALUE) cho một HashMap gọi là khoảng cách đó là trong class DistanceQueue. Tuy nhiên, bên trong của add (int v), khi tôi gõ

distances.put(v, Double.MAX_VALUE); 

tôi nhận được lỗi sau:

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 

Có ai biết tại sao tôi nhận được lỗi này? Tôi nghĩ Java tự động chuyển đổi giữa int và Integer cho bạn. Có cách nào dễ dàng để tôi có thể sửa nó không?

Cảm ơn!

+0

'distances' là gì? –

+0

khoảng cách là một HashMap. Nó đã được tạo ra với HashMap distance = new HashMap () – Ryan

+0

Tôi chắc chắn đã nhìn thấy bản sao của câu hỏi này trước đây nhưng chúng thực sự khó tìm kiếm vì chúng có xu hướng có các mô tả vấn đề ngẫu nhiên không gợi ý cho vấn đề thực tế. – 5gon12eder

Trả lời

19

Bạn đang sử dụng Integer làm tên của thông số loại, trong đó ẩn số java.lang.Integer.

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

Bạn nên có lẽ chỉ cần thả các tham số kiểu:

public class DistanceQueue extends PriorityQueue<Integer> 
+0

Vậy làm thế nào tôi có thể thay đổi cách tiếp cận của mình để tôi có thể chèn vào HashMap? – Ryan

+2

'lớp công khai Khoảng cáchQueue mở rộng PriorityQueue ' –

Các vấn đề liên quan