Andziev

HW01_5

Mar 12th, 2018
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.35 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.function.Supplier;
  6. import java.util.stream.Collectors;
  7. import java.util.stream.Stream;
  8.  
  9. class Student {
  10.     private String index;
  11.     private List<Subject> subjects;
  12.  
  13.     public Student(String[] headerParts, String[] rowParts) {
  14.         subjects = new ArrayList<>();
  15.         index = rowParts[0];
  16.         for (int i = 1; i < headerParts.length; i++) {
  17.             subjects.add(new Subject(headerParts[i], Integer.valueOf(rowParts[i])));
  18.         }
  19.     }
  20.  
  21.     public double getAverage() {
  22.         return subjects.stream()
  23.                 .mapToDouble(x -> x.getGrade())
  24.                 .average()
  25.                 .orElse(0);
  26.     }
  27.  
  28.     public List<Subject> getSubjects() {
  29.         return subjects;
  30.     }
  31.  
  32.     @Override
  33.     public String toString() {
  34.         return String.format("%s\t%.2f", index, getAverage());
  35.     }
  36. }
  37.  
  38. class Subject {
  39.     private String name;
  40.     private Integer grade;
  41.  
  42.     public Subject(String name, Integer grade) {
  43.         this.name = name;
  44.         this.grade = grade;
  45.     }
  46.  
  47.     public int getGrade() {
  48.         return grade.intValue();
  49.     }
  50.  
  51.     public String getName() {
  52.         return name;
  53.     }
  54.  
  55.     @Override
  56.     public String toString() {
  57.         return String.format("%s\t%d", name, grade);
  58.     }
  59. }
  60.  
  61. public class HW01_5 {
  62.     public static void main(String[] args) throws IOException {
  63.         BufferedReader reader = new BufferedReader(new FileReader("rezultati.csv"));
  64.         String[] headerParts = reader.readLine().split(",");
  65.         Supplier<Stream<String>> lines = () -> reader.lines();
  66.  
  67.         List<Student> students = lines.get()
  68.                 .map(l -> l.split(","))
  69.                 .map(rowParts -> new Student(headerParts, rowParts))
  70.                 .collect(Collectors.toList());
  71.  
  72.         System.out.println("Index\tAverage");
  73.         students.stream()
  74.                 .forEach(System.out::println);
  75.  
  76.         System.out.println("\nCourseName\tAverage");
  77.         students.stream()
  78.                 .flatMap(f -> f.getSubjects().stream())
  79.                 .collect(Collectors.groupingBy(Subject::getName, Collectors.averagingDouble(Subject::getGrade)))
  80.                 .forEach((name, average) -> System.out.println(String.format("%s\t%12.2f", name, average)));
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment