it-swarm.com.de

So rufen Sie Schlüssel und Werte von der Hashmap ab

Ich versuche, die Werte in die Hash-Zuordnung durch das Objekt einzufügen, und ich möchte überprüfen, ob die Werte in die Hash-Zuordnung eingefügt wurden. Also benutze ich diesen Code, aber zur Laufzeit kann ich keine Ausgabe bekommen.

Wie kann das behoben werden?

Code:

import Java.util.*;
import Java.io.*;
import Java.lang.*;

public class TaskList
{   

    private static HashMap<Integer, Object[]> dataz = new HashMap<Integer,Object[]>();
    private static  HashMap<Integer, Object[]> screen_dataz = new HashMap<Integer,Object[]>();
    public final static Object[][] longValues = {{"10", "kstc-proc", "10.10.10.10.10.","5","O"},{"11", "proc-lvk1", "12.1.2.","4","O"},{"13", "trng-lvk1", "4.6.1.","3","O"}};
    private static String sl,pid,tid,mval,status;

    public static void main(String args[])
    {
        addTask();
    }

    public static void addTask()
    {  
        for (int k=0; k<longValues.length; k++)
        {
        screen_dataz.put(k,longValues);
        }
        Set mapSet = (Set) screen_dataz.entrySet();
        Iterator mapIterator = mapSet.iterator();
        while (mapIterator.hasNext()) 
        {
        Map.Entry mapEntry = (Map.Entry) mapIterator.next();
        String keyValue = (String) mapEntry.getKey();
        String value = (String) mapEntry.getValue();
        System.out.println(value);
        }
    }
}
3
milano

Zuerst müssen Sie der Karte eine Zeile der longValues-Matrix hinzufügen und nicht die gesamte Matrix:

 for (int k=0; k<longValues.length; k++)
 {
     screen_dataz.put(k,longValues[k]);
 }

Extrahieren Sie dann während der Iteration den Wert als Object[] und nicht als String und geben Sie den Wert als Integer ein.

 while (mapIterator.hasNext()) 
 {
     Map.Entry mapEntry = (Map.Entry) mapIterator.next();
     Integer keyValue = (Integer) mapEntry.getKey();
     Object[] value = (Object[]) mapEntry.getValue();
     //iterate over the array and print each value
     for (int i=0; i<value.length; i++) {
         System.out.print(value[i] + " ");
     }
     System.out.println();
 }
5
darijan

Ihr Code mit ein paar Korrekturen/Verbesserungen:

  • Verwenden Sie kein Casting bei der Verwendung von Generika
  • die Schleife, die Elemente zu screen_dataz hinzufügte, fügte immer dasselbe Objekt hinzu
  • der in der Map gespeicherte Wert ist ein Array, das heißt, er wird bei einem einfachen Aufruf von toString() nicht wie erwartet gedruckt.

    public class TaskList {
        private static HashMap<Integer, String[]> dataz = new HashMap<Integer, String[]>();
        private static HashMap<Integer, String[]> screen_dataz = new HashMap<Integer, String[]>();
        public final static String[][] longValues = {
                { "10", "kstc-proc", "10.10.10.10.10.", "5", "O" },
                { "11", "proc-lvk1", "12.1.2.", "4", "O" },
                { "13", "trng-lvk1", "4.6.1.", "3", "O" } };
        private static String sl, pid, tid, mval, status;
    
        public static void main(String args[]) {
            addTask();
        }
    
        public static void addTask() {
            for (int k = 0; k < longValues.length; k++) {
                screen_dataz.put(k, longValues[k]);
            }
            Set<Entry<Integer, String[]>> mapSet = screen_dataz.entrySet();
            Iterator<Entry<Integer, String[]>> mapIterator = mapSet.iterator();
            while (mapIterator.hasNext()) {
                Entry<Integer, String[]> mapEntry = mapIterator.next();
                Integer keyValue = mapEntry.getKey();
                String[] value = mapEntry.getValue();
                System.out.println(Arrays.toString(value));
            }
        }
    }
    
5
Adam Siemion

Eine Korrektur in Ihrem Code:

Möglicherweise möchten Sie Ihre for-Schleife aktualisieren

wie

 for (int k=0; k<longValues.length; k++)
    {
    screen_dataz.put(k,longValues[k]);
    }
1
Juned Ahsan

Einige Anmerkungen zu diesem Code.

Erstens sind die generischen Argumente des parametrisierten Typs falsch. Die Karte speichert derzeit Map<Long,Object[]>, jedoch werden Objekte vom Typ Object[][] zur Map hinzugefügt. Ich gehe davon aus, dass Sie jeden Object[] als separate Entry in die Map eingeben möchten.

    for (int k=0; k<longValues.length; k++)
    {
    screen_dataz.put(k,longValues[k]);
    }

Das zweite Stück, das Sie sich ansehen sollten, ist die Iteration über die Map -Einträge. Verwenden Sie anstelle der Iterator eine for..each-Schleife.

    for(Entry<Integer,Object[]> entry: screen_dataz.entrySet()){
       //repetitive task
    }

Endgültige Ausgabe

import Java.util.HashMap;
import Java.util.Iterator;
import Java.util.Map;
import Java.util.Map.Entry;
import Java.util.Set;

public class TaskList
{   

    private static HashMap<Integer, Object[]> dataz = new HashMap<Integer,Object[]>();
    private static  HashMap<Integer, Object[]> screen_dataz = new HashMap<Integer,Object[]>();
    public final static Object[][] longValues = {{"10", "kstc-proc", "10.10.10.10.10.","5","O"},{"11", "proc-lvk1", "12.1.2.","4","O"},{"13", "trng-lvk1", "4.6.1.","3","O"}};
    private static String sl,pid,tid,mval,status;

    public static void main(String args[])
    {
        addTask();
    }

    public static void addTask()
    {  
        for (int k=0; k<longValues.length; k++)
        {
        screen_dataz.put(k,longValues[k]);
        }

        for(Entry<Integer,Object[]> entry: screen_dataz.entrySet()){
            System.out.println(entry.getKey());
            for(Object obj: entry.getValue()){
                    System.out.println(obj.toString());
            }
        }
    }

}
0
Kevin Bowersox

Ich denke, die Verwendung von screen_dataz.put(k,longValues[k]); in einer Schleife wird Ihnen helfen. Sie können dafür auch einen Iterator verwenden.

0
LTKD

Ändern Sie zunächst Ihre for -Schleife, um sie so in screen_dataz aufzufüllen.

for (int k=0; k<longValues.length; k++)
{
    screen_dataz.put(k,longValues[k]);
}

Nehmen Sie als Nächstes die folgende Änderung vor: -

String keyValue = mapEntry.getKey().toString();
String value = Arrays.asList((Object[])mapEntry.getValue()).toString();

Dadurch wird Ihr Wert richtig gedruckt.

0
SudoRahul