Java Priority Queue

  • + 1 comment

    What am i doing wrong, can someone pls help me identify

    Priorities

    class Priorities {
      private PriorityQueue<Student> students = new PriorityQueue<>(1000);
    
      public List<Student> getStudents(List<String> events) {
        events.forEach(event -> {
          if (event.startsWith("ENTER")) {
            String[] studentDetails = event.split(" ");
    
            Integer id = Integer.valueOf(studentDetails[3]);
            String name = studentDetails[1];
            Double cgpa = Double.valueOf(studentDetails[2]);
    
            students.offer(new Student(id, name, cgpa));
    
          } else if (event.equals("SERVED")) {
            students.poll();
          }
        });
        List<Student> stdLst = new ArrayList<>();
        students.forEach(student -> stdLst.add(student));
    //    return new ArrayList<>(students);
        return stdLst;
      }
    
    }
    }
    

    Student

    class Student implements Comparable {
    private Integer id;
    private String name;
    private Double cgpa;
    
    public Student(Integer id, String name, Double cgpa) {
        this.id = id;
        this.name = name;
        this.cgpa = cgpa;
        }
    
    public Integer getID() {
        return this.id;
        }
    
    public String getName() {
        return this.name;
        }
    
    public Double getCGPA() {
        return this.cgpa;
        }
    
    @Override
    public int compareTo(Object obj) {
        Student s = (Student) obj;
      if (!this.getCGPA().equals(s.getCGPA())) {
        return - this.getCGPA().compareTo(s.getCGPA());
      } else {
        if (!this.getName().equals(s.getName())) {
          return this.getName().compareTo(s.getName());
        }
        return this.getID().compareTo(s.getID());
      }
    }
    
        @Override
        public String toString() {
            return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", cgpa=" + cgpa +
                '}';
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || getClass() != o.getClass()) {
                return false;
            }
            Student student = (Student) o;
            return id.equals(student.id) && name.equals(student.name) && cgpa.equals(student.cgpa);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(id, name, cgpa);
        }
    }