public class Hashmapeg {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap<String, ArrayList<Integer>> marksTable = new HashMap<String, ArrayList<Integer>>();
ArrayList<Integer> marks = new ArrayList<>();
int marksSub;
for(int j = 0; j < 2; j++){
System.out.print("\nEnter name " + j + " = ");
String name = sc.nextLine();
for(int i = 0; i < 3; i++){
System.out.print("Enter marks " + i + " = ");
marksSub = sc.nextInt();
marks.add(marksSub);
}
marksTable.put(name, marks);
}
System.out.println(marksTable);
sc.close();
}}
输出
Enter name 0 = abc
Enter marks 0 = 1
Enter marks 1 = 2
Enter marks 2 = 3
Enter name 1 = Enter marks 0 = 4
Enter marks 1 = 5
Enter marks 2 = 6
{=[1, 2, 3, 4, 5, 6], abc=[1, 2, 3, 4, 5, 6]}
预期输出如下所示
{name1=[1,2,3], name2=[4,5,6]}
我想在键值对中存储这种类型的表
-------------------------------------
| name1 | 35 | 23 | 12 |
| name2 | 45 | 20 | 10 |
-------------------------------------
如何只使用java来存储这种类型的表我也不知道如何迭代到这个表中。
1条答案
按热度按时间4nkexdtk1#
你创造了
marks
在圈外,所以是一样的ArrayList
只有一个,您需要在每次迭代中创建一个新的。也更喜欢
Integer.parseInt(sc.nextLine())
作为sc.nextInt()
因为您不希望正确处理新行(这就是导致输出中出现空名称的原因)对于打印,请看
How to iterate a Map
和也更喜欢通用的定义,
Map
而不是HashMap
,List
而不是ArrayList
,对于定义,对于示例keep class