如何解决如何在 HashMap 或 Java 中的任何其他方法中存储 key=string、value=arraylist?
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,6]}
预期输出看起来像这样
{name1=[1,3],name2=[4,6]}
我想将这种类型的表存储在键值对中
-------------------------------------
| name1 | 35 | 23 | 12 |
| name2 | 45 | 20 | 10 |
-------------------------------------
如何仅使用 java 存储这种类型的表,我也不知道如何迭代。
解决方法
-
您在循环外创建了
marks
,因此使用了相同的ArrayList
,只有一个,您需要在每次迭代时创建一个新的。也更喜欢
Integer.parseInt(sc.nextLine())
作为sc.nextInt()
因为您不想正确处理换行符(这就是导致输出中出现空名称的原因)for (int j = 0; j < 2; j++) { System.out.print("\nEnter name " + j + " = "); String name = sc.nextLine(); marks = new ArrayList<>(); for (int i = 0; i < 3; i++) { System.out.print("Enter marks " + i + " = "); marks.add(Integer.parseInt(sc.nextLine())); } marksTable.put(name,marks); }
-
要打印,请查看
How to iterate a Map
和Map<String,List<Integer>> marksTable = Map.of( "name1",Arrays.asList(1,2,3),"name2",Arrays.asList(4,5,6),"name3",Arrays.asList(7,8,9) ); System.out.println("---------------------"); for (Map.Entry<String,List<Integer>> entry : marksTable.entrySet()) { String values = entry.getValue().stream().map(Object::toString).collect(Collectors.joining(" | ")); System.out.println("| " + entry.getKey() + " | " + values + " |"); } System.out.println("---------------------");
也更喜欢更通用的定义,Map
代替 HashMap
,List
代替 ArrayList
,用于定义,用于实例化保持类
Map<String,List<Integer>> marksTable = new HashMap<>();
List<Integer> marks;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。