如何打印出保存在 LinkedHashMap 中的数据
how can I print out data saved in LinkedHashMap
这是获取人员信息的简单代码。例如,当我输入 enter#runnan#male#23#Earth 时,它会将数据保存在 LinkedHashMap 中。此外,当我输入 search#runnan 时,它会在 LinkedHashMap 中搜索数据并找到名称 runnan,然后打印整个信息。我以某种方式设法保存了部分,但每当我尝试搜索时,它只显示数据的文件地址。
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");
}
}
}
这是覆盖 class。
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;
}
}
如有任何帮助,我将不胜感激,我将不胜感激。
为了将地图中的所有值打印到控制台,您应该这样写:
else if (arr[0].equals("listAll")) {
for (Person person : ps.values()) {
System.out.println( person );
}
continue;
}
或具有 Java 8 Stream API
功能的更简洁版本:
else if (arr[0].equals("listAll")) {
map.values().forEach(System.out::println);
continue;
}
我用这些输入试过你的代码:
enter#Jhon#Men#23#Moon
enter#Mongo#Men#101#Jupiter
enter#Paul#Men#23#Earth
然后,当我使用搜索时:
search#Paul
我得到了:
PaulMen23Earth
或许您可以编辑您的 toString()
方法:
public String toString(){
String t = "name: " + name+ ",\n" + "gender: " + gender+ ",\n" +
"age: " + age + ",\n" + "address: " + address;
return t;
此外,当名称不在列表中时,您应该添加一个控件:
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");
}
这是获取人员信息的简单代码。例如,当我输入 enter#runnan#male#23#Earth 时,它会将数据保存在 LinkedHashMap 中。此外,当我输入 search#runnan 时,它会在 LinkedHashMap 中搜索数据并找到名称 runnan,然后打印整个信息。我以某种方式设法保存了部分,但每当我尝试搜索时,它只显示数据的文件地址。
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");
}
}
}
这是覆盖 class。
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;
}
}
如有任何帮助,我将不胜感激,我将不胜感激。
为了将地图中的所有值打印到控制台,您应该这样写:
else if (arr[0].equals("listAll")) {
for (Person person : ps.values()) {
System.out.println( person );
}
continue;
}
或具有 Java 8 Stream API
功能的更简洁版本:
else if (arr[0].equals("listAll")) {
map.values().forEach(System.out::println);
continue;
}
我用这些输入试过你的代码:
enter#Jhon#Men#23#Moon
enter#Mongo#Men#101#Jupiter
enter#Paul#Men#23#Earth
然后,当我使用搜索时:
search#Paul
我得到了:
PaulMen23Earth
或许您可以编辑您的 toString()
方法:
public String toString(){
String t = "name: " + name+ ",\n" + "gender: " + gender+ ",\n" +
"age: " + age + ",\n" + "address: " + address;
return t;
此外,当名称不在列表中时,您应该添加一个控件:
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");
}