2016-11-01 2 views
-2

ich geschaffen habe ein HashMap im Folgenden aufgeführt:HashMap Einzelwert Retrieval in Java

Map<String, List<Double>> hm1 = new HashMap<String, List<Double>>();  
List<Double> hmValues1 = new ArrayList<Double>(); 

und mit diesem unter Methode Wert aus einer Datei hinzufügen, wo die angegebenen Werte der Datei sind:

line1 0.418 0.24968 -0.41242 0.1217 0.34527 -0.044457 -0.49688 -0.17862 0.00066023 -0.6566 
line2 0.013441 0.23682 -0.16899 0.40951 0.63812 0.47709 -0.42852 -0.55641 -0.364 -0.23938 
line3 -0.418 -0.24968 0.41242 -0.1217 -0.34527 -0.16899 -0.40951 -0.63812 -0.47709 0.42852 

Ich bin in der Lage, alle Werte des Schlüssels zu drucken: line1, aber ich möchte einzelne Werte der Liste abrufen, um sie getrennt zu verarbeiten.

public static void conceptHashMap() { 
    int len,i=0; 
    double dVal=0.0; 
    String strLine; 
    String conceptSearch = "line1";  // will be a key in hashmap 

    try (BufferedReader br = new BufferedReader(new FileReader(fileName))) { 

     while ((strLine = br.readLine()) != null) { 
      String[] dims = strLine.split(" "); 
      len = dims.length; 
      if (dims[i++].equals(conceptSearch)) { 
       while (--len>0) { 
        dVal=Double.parseDouble(dims[i++]); 
        hmValues1.add(dVal); 
       } 
       hm1.put(conceptSearch, hmValues1); 
       for (Map.Entry<String, List<Double>> entry : hm1.entrySet()) { 
        String key = entry.getKey(); 
        List<Double> hmvalues1 = entry.getValue(); 
        System.out.println("key value pair"); 
        System.out.println("Key = " + key); 
        System.out.println("Values = " + hmvalues1); 
       } 
       break; 
      } 
      i=0; 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

Nun, Sie haben bereits eine 'Liste ' ..., so dass Sie auf jeden einzelnen Wert zugreifen können. Es spielt keine Rolle, dass du diese Liste von einer Karte hast ... –

+0

kannst du mir bitte eine Code-Hilfe geben? Wo soll ich bearbeiten, um individuelle Werte zu erhalten? Danke –

+3

Es ist unklar, was Sie fragen. Du hast eine Liste von Werten - wie würdest du normalerweise individuelle Werte daraus gewinnen? Der Kartenteil ist irrelevant. –

Antwort

0
public static void conceptHashMap() { 
int len,i=0; 
double dVal=0.0; 
String strLine; 
String conceptSearch = "line1";  // will be a key in hashmap 

try (BufferedReader br = new BufferedReader(new FileReader(fileName))) { 

    while ((strLine = br.readLine()) != null) { 
     String[] dims = strLine.split(" "); 
     len=dims.length; 
     if(dims[i++].equals(conceptSearch)){ 
      while(--len>0) { 
       dVal=Double.parseDouble(dims[i++]); 
       hmValues1.add(dVal); 
      } 
      hm1.put(conceptSearch, hmValues1); 
      for (Map.Entry<String, List<Double>> entry : hm1.entrySet()) { 
       String key = entry.getKey(); 
       List<Double> hmvalues1 = entry.getValue(); 
       System.out.println("key value pair"); 
       System.out.println("Key = " + key); 
       System.out.println("Values = " + hmvalues1); 
       // simply iterate the list to get each single value 
       for(Double hmvalue : hmvalues1){ 
         System.out.println(hmvalue); 
       } 

      } 
      break; 
     } 
     i=0; 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
    } 
} 

Sie können einfach jeden Wert in der Liste bekommen und tun, was Sie es brauchen.

+0

Danke @Badr uz Zaman –