Java 无法在Hashmap对象中存储字符串数组
我正在学习java。我想将字符串数组值添加到Hashmap。我的数据有2行3列。 这是代码,平均值和出生日期记录不存储在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);
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]);