2012-09-24 28 views
6

मैंने एक हैश मैप ऑब्जेक्ट बनाया है जो एक स्ट्रिंग को int और इसी मान के रूप में संग्रहीत करता है। अब मैं प्राथमिकता कतार रखना चाहता हूं जिसमें सभी स्ट्रिंग मौजूद हैं जो मैश मैप ऑब्जेक्ट में मौजूद हैं, प्राथमिकताओं को निर्दिष्ट करने के संदर्भ के रूप में मूल्य के साथ। मैं निम्नलिखित कोड लिखा हैजावा में हैश मैप ऑब्जेक्ट के लिए प्राथमिकता कतार

public class URIQueue { 

     private HashMap<String,Integer> CopyQURI; 
     private PriorityQueue<String> QURI; 

     public class TComparator<String> { 
     public int compareTo(String s1, String s2) { 
      if (CopyQURI.get(s2) - CopyQURI.get(s1) >= 0) { 
       return 1; 
      } else { 
       return 0; 
      } 
     } 
     } 

     public URIQueue() { 
     CopyQURI=new HashMap<>(100); 
     TComparator<String> tc=new TComparator<>(); 
     QURI=new PriorityQueue<>(100, tc); //Line x 
     } 
} 

लाइन एक्स त्रुटि दिखा रहा है प्राथमिकता कतार के लिए प्रकार तर्क अनुमान नहीं लगा सकता। कृपया मुझे मार्गदर्शन करें कि मैंने क्या गलती की है।

+3

इस प्रकार का "परिवर्तनीय तुलनित्र" बेहद खतरनाक और बग-प्रोन हो सकता है। स्ट्रिंग और पूर्णांक को एकसाथ पकड़ने के लिए आप शायद एक नई कक्षा बनाने से बेहतर हो। –

उत्तर

3

त्रुटि आप राज्यों का जिक्र कर रहे हैं, कि यह सामान्य प्रकार पैरामीटर का अनुमान नहीं लगा सकता है जिसे आपने छोड़ा है। इसका कारण यह है कि आप जिस कंस्ट्रक्टर का उपयोग कर रहे हैं वह ज्ञात नहीं है। यह ज्ञात नहीं है, क्योंकि आप दूसरा तर्क तुलनित्र नहीं है। कन्स्ट्रक्टर को स्वीकार करने के लिए सुरक्षित टाइप करने के लिए आपके तुलनित्र को java.util.Comparator interface को लागू करना होगा।

public class TComparator<String> implements Comparator<String> { 

    @Override 
    public int compare(String arg0, String arg1) { 
     // ... 
    } 
} 

भी बात नहीं, Comparator इंटरफ़ेस में उचित विधि compare और नहीं compareTo कहा जाता है।

एक सामान्य सलाह, मैं दो दिए गए तर्कों के लिए एक तुलनित्र लुइस Wasserman से सहमत होना हमेशा एक ही परिणाम लौटना चाहिए और आवेदन की स्थिति पर निर्भर नहीं है। कुछ मामलों के बारे में सोचना बहुत आसान है और आवेदन अंततः त्रुटिपूर्ण है।

+0

धन्यवाद। यह काम किया .. –

संबंधित मुद्दे