2016-03-30 3 views
0

Dies ist ein einfacher Code, um Informationen über die Person zu erhalten. Wenn ich beispielsweise # runnan # male # 23 # Earth eingeben würde, würden die Daten in LinkedHashMap gespeichert. Auch wenn ich in der Suche # Runnan eintippe, würde es die Daten in LinkedHashMap suchen und Namen runnan finden, dann die ganze Information drucken. Ich habe es irgendwie geschafft, den Speicher zu speichern, aber wenn ich versuche zu suchen, wird nur die Dateiadresse der Daten angezeigt.Wie kann ich die in LinkedHashMap gespeicherten Daten ausdrucken

import java.util.*; 
public class PersonManage { 
    public static void main(String[] args){ 
     Scanner scanner = new Scanner(System.in); 
     Map<String, Person> ps = new LinkedHashMap<String, Person>(); 
     ps.put("Runnan", new Person("Runnan","Male", 23, "Earth")); 

    while(true){ 
     System.out.println("Person Manager > "); 
     String in = scanner.nextLine(); 
     String[] arr = in.split("#"); 
     if(arr[0].equals("enter")){ 
      String name = arr[1]; 
      String gender = arr[2]; 
      int age = Integer.parseInt(arr[3]); 
      String address = arr[4]; 
      ps.put(arr[1], new Person(arr[1],arr[2],age,arr[4])); 
      System.out.println(arr[1]+"Saved"); 
      continue; 
     } 
     else if(arr[0].equals("search")){ 
      System.out.println(ps.get(arr[1]).toString()); 
      continue; 
     } 
     else if(arr[0].equals("exit")){ 
      break; 
     } 
     else { 
      System.out.println("write in format of enter#name#gender#age#address"); 
      System.out.println("or search#searchingname"); 

     } 

    } 
} 

Dies ist die überschriebene Klasse.

public class Person { 

String name; 
String gender; 
int age; 
String address; 
public Person(String string, String string2, int i, String string3) { 
    // TODO Auto-generated constructor stub 
    this.name = string; 
    this.gender = string2; 
    this.age = i; 
    this.address=string3; 
} 
public String toString(){ 
    String t = name+gender+age+address; 
    return t; 
} 
} 

Jede Hilfe wäre mir dankbar und wird so geschätzt werden.

+0

Haben Sie versucht, darüber zu iterieren? –

Antwort

0

Ich habe versucht, Ihren Code diese Eingaben:

enter#Jhon#Men#23#Moon 
enter#Mongo#Men#101#Jupiter 
enter#Paul#Men#23#Earth 

Dann, wenn ich Suche verwendete:

search#Paul 

Ich habe:

PaulMen23Earth 

Vielleicht können Sie Ihre toString() Methode bearbeiten:

public String toString(){ 
    String t = "name: " + name+ ",\n" + "gender: " + gender+ ",\n" + 
       "age: " + age + ",\n" + "address: " + address; 
    return t; 

Neben Sie ein Steuerelement hinzufügen sollte, wenn ein Name nicht in der Liste ist:

else if(arr[0].equals("search")){ 
    if(ps.get(arr[1])!= null) { 
     System.out.println(ps.get(arr[1]).toString()); 
     continue; 
    } 
    else { 
     System.out.println("This name is not present. You can add it using \"enter\" command"); 
     } 
+0

das passt perfekt zu meiner Frage xD danke! –

+0

Es war nur ein Rendering "Problem". Ich bin froh, wenn ich geholfen habe. – DistribuzioneGaussiana

1

Um alle Werte von der Karte auf die Konsole drucken Sie so etwas wie schreiben sollen:

else if (arr[0].equals("listAll")) { 
    for (Person person : ps.values()) { 
     System.out.println(person); 
    } 
    continue; 
} 

Oder prägnante Version mit Java 8 Stream API Features: mit

else if (arr[0].equals("listAll")) { 
    map.values().forEach(System.out::println); 
    continue; 
} 
+0

danke, nicht wirklich, was ich meinte, aber habe die Hinweise davon :) –

+0

froh zu helfen, willkommen im Stackoverflow! IMHO Hinweise sind nützlicher als jemand die komplette Lösung :) – Cootri

Verwandte Themen