如何将一个地图中的K写入另一个文件,并将另一个地图中的V写入一个文件?

我需要在一列中将csv中的所有键写到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); 
    }

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

xxiaoabc 回答:如何将一个地图中的K写入另一个文件,并将另一个地图中的V写入一个文件?

您不需要嵌入式循环。您可以仅从第一张地图的键进行迭代,并从第二张地图获取值:

for (String courseKey: courses.keySet())
   String count = countStudents.get(courseKey);
   // ... output courseKey and count to file
}
,

尝试一下。它确实假定每个映射中的映射条目数是相同的。 否则,您将获得超出范围的索引异常,或者将不打印所有值。

      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();
本文链接:https://www.f2er.com/2921912.html

大家都在问