gpt4 book ai didi

java - 如何将一个 Map 中的 K 和另一个 Map 中的 V 写入一个文件?

转载 作者:行者123 更新时间:2023-12-01 19:23:13 27 4
gpt4 key购买 nike

我需要将一列中一个映射的所有键写入 csv,并将下一列中不同映射的所有值写入 csv。

我可以使用此代码单独执行任一列,但是当我组合时,我该如何解释这一点(?),如果我有 10 个键和 10 个值,则键将重复每个键的 10 个。

我需要对循环做什么?

private static void generateCourseCounts() throws IOException {     
ArrayList<StudentCourse> lsc = loadStudentCourses();
Map<Integer, Integer> countStudents = new TreeMap<Integer, Integer>();
for (StudentCourse sc : lsc) {
Integer freq = countStudents.get(sc.getCourseId());
countStudents.put(sc.getCourseId(), (freq == null) ? 1 : freq + 1);
}
ArrayList<Course> lc = loadCourses();
Map<String, String> courses = new LinkedHashMap<String, String>();
for (Course c : lc) {
String freq = courses.get(c.getCourseName());
courses.put(c.getCourseName(), freq);
}
FileWriter writer = new FileWriter("CourseCounts.csv");
PrintWriter printWriter = new PrintWriter(writer);
printWriter.println("Course Name\t# Students");
for (Entry<String, String> courseKey : courses.entrySet())
for (Entry<Integer, Integer> numberKey : countStudents.entrySet()) {
printWriter.println(courseKey.getKey() + "\t" + numberKey.getValue());
}
printWriter.close();
writer.close();
}

因此,根据下面的评论,我对此进行了编辑:

for (String courseKey : courses.keySet()) {
Integer count = countStudents.get(courseKey) ;
printWriter.println(courseKey + "\t" + count);
}

但是,这会写入一个空文件。

最佳答案

试试这个。它确实假设每个映射中的映射条目数是相同的。否则,您将得到索引越界异常,或者不会打印所有值。

      int i = 0;
Integer[] counts = countStudents.values().stream().toArray(Integer[]::new);
for (String courseKey : courses.keySet()) {
printWriter.println(courseKey + "\t" + counts[i++]);
}
printWriter.close();
writer.close();

关于java - 如何将一个 Map 中的 K 和另一个 Map 中的 V 写入一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59335978/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com