2010-05-08 12 views

उत्तर

45

क्या देता है? यह काम करता हैं। बस इसे अनदेखा:

@SuppressWarnings("unchecked") 

नहीं, आप यह parameterize cannot। हालांकि मैं इसके बजाय List<Map<K, V>> का उपयोग करूंगा।

List<Map<String, String>> listOfMaps = new ArrayList<Map<String, String>>(); 

संग्रह और नक्शे के बारे में अधिक जानने के लिए this tutorial पर एक नजर है।

+1

धन्यवाद:

क्या इस तरह दिखता है। मैं इसे नक्शे की एक सूची का उपयोग कर काम कर रहा है। मुझे चेतावनियों को अनदेखा करना पसंद नहीं है। मेरे अनुभव में यदि आपको चेतावनी मिल रही है, तो आप इसे करते हैं। एकमात्र चीज जिसे मैं समझ नहीं पा रहा हूं, यही कारण है कि मैं इसे एक प्रकार के मानचित्र के रूप में घोषित करता हूं, लेकिन जब मैं वास्तव में इसे तुरंत चालू करता हूं तो मुझे हैश मैप का उपयोग करना पड़ता है? मानचित्र <स्ट्रिंग, स्ट्रिंग> प्रतिक्रिया मैप; प्रतिक्रिया मैप = नया हैश मैप <स्ट्रिंग, स्ट्रिंग>(); – Joren

+0

यह एक इंटरफेस है। एक ब्लूप्रिंट एक अनुबंध। लिंक का पालन करें :) – BalusC

+0

आप मानचित्र की सूची का उपयोग क्यों करें, फिर एक हैश मैप, कृपया समझाएं। – Daniel

3

आपके पास सामान्य प्रकार की सरणी नहीं हो सकती है। इसके बजाय List का उपयोग करें।

+0

असल में, आप * सामान्य प्रकार की सरणी * कर सकते हैं, आप * सीधे * बना सकते हैं।(मुझे इसके पीछे तर्क को समझने का अनुमान नहीं है, लेकिन यह वही है जो स्पेक कहता है) – meriton

5

जावा भाषा विशिष्टता, खंड 15.10, राज्यों:

An array creation expression creates an object that is a new array whose elements are of the type specified by the PrimitiveType or ClassOrInterfaceType. It is a compile-time error if the ClassOrInterfaceType does not denote a reifiable type (§4.7).

और

The rules above imply that the element type in an array creation expression cannot be a parameterized type, other than an unbounded wildcard.

निकटतम आप, या तो कच्चे प्रकार से एक अनियंत्रित कलाकारों का उपयोग कर रहा है, क्या कर सकते हैं के रूप में आप क्या किया है

, या एक unbounded वाइल्डकार्ड से:

HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()]; 

आपका संस्करण स्पष्ट रूप से बेहतर है :-)

9

आप कुछ इस तरह का उपयोग कर सकते हैं:

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 


public class testHashes { 

public static void main(String args[]){ 
    Map<String,String> myMap1 = new HashMap<String, String>(); 

    List<Map<String , String>> myMap = new ArrayList<Map<String,String>>(); 

    myMap1.put("URL", "Val0"); 
    myMap1.put("CRC", "Vla1"); 
    myMap1.put("SIZE", "Val2"); 
    myMap1.put("PROGRESS", "Val3"); 

    myMap.add(0,myMap1); 
    myMap.add(1,myMap1); 

    for (Map<String, String> map : myMap) { 
     System.out.println(map.get("URL")); 
        System.out.println(map.get("CRC")); 
        System.out.println(map.get("SIZE")); 
        System.out.println(map.get("PROGRESS")); 
    } 

    //System.out.println(myMap); 

} 


} 
+0

मुझे त्रुटि मिलती है: (1 9, 15) जावा: अपेक्षित –

4

जावा आप HashMaps की एक सरणी बनाने के लिए नहीं चाहता है, लेकिन यह आप वस्तुओं की एक सरणी बनाने देंगे। तो, बस अपने हैश मैप के चारों ओर एक खोल के रूप में एक कक्षा घोषणा लिखो, और उस वर्ग की एक सरणी बनाओ। यह आपको हैशमैप्स के बारे में कुछ अतिरिक्त डेटा स्टोर करने देता है यदि आप चुनते हैं - जो लाभ हो सकता है, यह देखते हुए कि आपके पास पहले से ही कुछ जटिल डेटा संरचना है।

private static someClass[] arr = new someClass[someNum]; 

और

public class someClass { 

private static int dataFoo; 
private static int dataBar; 
private static HashMap<String, String> yourArray; 

... 

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