【问题标题】:user input values are not added to hashmap用户输入值未添加到 hashmap
【发布时间】: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() 中的unsortMapgetUnSortedMap() 中的unsortMap 不同。您创建了一个新方法本地范围映射,它与其他映射无关。
  • 添加用户只是创建一个新地图,该地图在功能完成后会丢失。

标签: java sorting hashmap


【解决方案1】:

一种方法是全局声明 unsortMap Map 以便它可以在其他方法中使用。 问题在于您的 addUser 方法,因为它创建了一个本地 unsortMap ,该函数完成后从未使用过。 另一种方法是将 unsortMap Map 作为参数传递给addUser 方法并放入所需的对。

以下是修改后的工作代码。

class CFG
{
    static Map<String, Integer> unsortMap; // global declaration of Map
    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);
        unsortMap = new HashMap<>(); // Initializing the Map
        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);
        System.out.println("Enter name : ");
        String a = in.nextLine();
        System.out.println("Enter Time : ");
        int b = in.nextInt();
        unsortMap.put(a,b);
    }
}

【讨论】:

    【解决方案2】:

    您必须将 unSortedMap 传递给 addUser 方法。

    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(unsortMap);
    
        } return unsortMap;
    }
    
    
    public static void addUser(Map<String, Integer> unsortMap){
    
        Scanner in = new Scanner(System.in);
        System.out.println("Enter name : ");
        String a = in.nextLine();
        in.nextLine();
        System.out.println("Enter Time : ");
        Integer b =in.nextInt();
        unsortMap.put(a,b);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      相关资源
      最近更新 更多