【发布时间】:2021-09-03 00:02:33
【问题描述】:
我有一个预先输入值的哈希图,我正在从用户那里获取更多值。然后这些值按升序排序。但是在这段代码中,用户输入的值不会被插入到 hashmap 中。
import java.sql.SQLOutput;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class CFG {
public static void main(String[] args) {
sortByValueJava8Stream();
}
private static void sortByValueJava8Stream()
{
Map<String, Integer> unSortedMap = getUnSortedMap();
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
unSortedMap.entrySet().stream().sorted(Map.Entry.comparingByValue())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
System.out.println("Sorted Map : " + sortedMap);
}
public static Map<String, Integer> getUnSortedMap() {
Scanner in = new Scanner(System.in);
HashMap<String, Integer> unsortMap = new HashMap<>();
unsortMap.put("Shiran", 342);
unsortMap.put("Hashini", 448);
unsortMap.put("Chanchala", 398);
unsortMap.put("Priyankara", 399);
unsortMap.put("Mayuri", 350);
unsortMap.put("Sameera", 321);
unsortMap.put("Supun", 299);
unsortMap.put("Supuni", 378);
unsortMap.put("Kavindu", 384);
unsortMap.put("Nadeeka", 440);
System.out.println("Do you want to add more players? ");
System.out.println("if yes pres 1 : ");
Integer c = in.nextInt();
if (c == 1) {
addUser();
} return unsortMap;
}
public static void addUser(){
Scanner in = new Scanner(System.in);
Map<String, Integer> unsortMap = new HashMap<>();
System.out.println("Enter name : ");
String a = in.nextLine();
in.nextLine();
System.out.println("Enter Time : ");
Integer b =in.nextInt();
unsortMap.put(a,b);
}
}
我创建了一个名为 adduser() 的方法,并调用它来添加新值。但数据不会被它输入。我该如何解决这个问题?
【问题讨论】:
-
addUser()中的unsortMap与getUnSortedMap()中的unsortMap不同。您创建了一个新方法本地范围映射,它与其他映射无关。 -
添加用户只是创建一个新地图,该地图在功能完成后会丢失。