Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在Hashmap对象中存储字符串数组_Java - Fatal编程技术网

Java 无法在Hashmap对象中存储字符串数组

Java 无法在Hashmap对象中存储字符串数组,java,Java,我正在学习java。我想将字符串数组值添加到Hashmap。我的数据有2行3列。 这是代码,平均值和出生日期记录不存储在hashmap上 public class Practice1 { public static void main(String[] args) throws ParseException { Scanner sc=new Scanner(System.in);

我正在学习java。我想将字符串数组值添加到Hashmap。我的数据有2行3列。 这是代码,平均值和出生日期记录不存储在hashmap上

    public class Practice1 {
        public static void main(String[] args) throws ParseException
        {
            
            Scanner sc=new Scanner(System.in);
             System.out.println("Enter the no. of players");
             int player=sc.nextInt();
             
             String[][] newArray = new String[player][3];
             System.out.println("enter the player_name, average,date_of_birth");
            
                 for (int i=0; i<newArray.length; i++) {
                    String[] line = sc.next().trim().split(",");
                    for (int j=0; j<line.length; j++) {
                        newArray[i][j] = line[j];
                    }
                 }
             
             HashMap<String, String> hmap = new HashMap<String,String>();
             for (String[] mapping : newArray) {
                 hmap.put(mapping[0], mapping[1]);
               }
         
               
               System.out.println(Arrays.asList(hmap));
           }             
    }

按优先顺序

  • 更愿意创建一个
    Player
    类并创建一个
    HashMap
    来保存所有玩家信息
  • 第二种方法是创建一个
    HashMap
  • 如果您坚持按照问题中描述的方式进行操作,则需要一个
    HashMap
  • 运动员班 你的
    Player
    类应该有三个字段(实例变量),一个
    String
    作为名字,一个
    double
    (或
    float
    )作为平均值,一个
    LocalDate
    作为出生日期。您可以为它提供一个方便的构造函数,该构造函数接受一行输入,将其拆分为三个值,如果值的数目不是三个,则引发异常,然后将平均值解析为
    双精度
    ,将日期解析为
    本地日期
    。还要对
    toString
    方法进行编码,以便以可识别的方式打印对象

    现在将
    Player
    对象存储到
    HashMap
    中。编辑:例如,创建播放器对象后,执行以下操作:

        hmap.put(yourPlayer.getName(), yourPlayer);
    
    (假设您的
    Player
    类定义了一个返回名称的
    getName
    方法)

    哈希图 将诸如
    HashMap
    之类的泛型集合与数组混合使用会带来一些麻烦。因此我建议使用
    HashMap
    。将输入行拆分为
    字符串
    数组后,将其包装到带有
    数组的列表中。asList(line)
    并将该列表存储到地图中

    如果您坚持:HashMap 您可以创建一个映射,其中键是字符串(就像您现在得到的映射中的键一样)和值字符串数组。然后,您可以将从
    split()
    获取的数组作为值直接存储到映射中(无需先复制单个字符串,除非您有特殊要求,您没有告诉我们)

    PS在这种情况下,打印地图的一个简单方法是使用lambda:

        hmap.forEach((name, arr) -> System.out.println(name + '=' + Arrays.toString(arr)));
    
    在任何情况下都是快乐的

    你的代码出了什么问题?
    在这一行中,您将存储一个映射条目,其中名称是key,平均值是value。数组中的最后一个条目(列)出生日期不会存储到地图中。

    预期输出是什么?因为您只存储name/avg,所以这是您现在可以获得的唯一输出。感谢您的回复。我更喜欢创建一个Player类和一个HashMap。我创建了Player类。如何在地图数组中存储所有方式。如果没有看到你的代码,我就很难说了。我在一行编辑了一个如何做的例子。
        hmap.forEach((name, arr) -> System.out.println(name + '=' + Arrays.toString(arr)));
    
                 hmap.put(mapping[0], mapping[1]);