@idshahron

Как отсортировать TreeSet по возрастанию и убыванию?

Не получается отсортировать TreeSet по одному из элементов класса
Вот как выглядит задание:

В файле “a.csv” записан список студентов, сдававших экзамены, с указанием фамилии, группы и отметок. Информация о каждом студенте хранится в отдельной строке. Прочитать информацию в связный список (LinkedList). Создать две коллекции типа TreeSet. Элементами TreeSet
являются объекты, содержащие фамилию и средний балл студента. В первой
коллекции списки отсортировать по возрастанию среднего балла во
второй – по убыванию. Новые коллекции распечатать на экран.

Что у меня получилось написать на данный момент(пробовал с помощью Comparable):

import java.io.*;
import java.util.*;

class Capital {
String name;
String group;
ArrayList grade = new ArrayList<>();
double sr;
}

class Asd implements Comparable{
String fname;
double midd;
public Asd (String ffname,double mid){
fname = ffname;
midd = mid;
}
public int compareTo(Asd o) {
return Double.compare(midd,o.midd);
}
}


public class Main {

public static void main(String[] args) {
String path = "a.csv";
String line = "";
LinkedList list = new LinkedList<>();
TreeSet tree1 = new TreeSet<>();
TreeSet tree2 = new TreeSet<>();
try {
BufferedReader br = new BufferedReader(new FileReader(path));

while ((line = br.readLine()) != null) {
String[] values = line.split(",");
Capital ex = new Capital();
ex.name = values[0];
ex.group = values[1];
for (int i = 2; i < (values.length - 1); i++) {
int num = Integer.parseInt(values[i]);
ex.grade.add(num);
}
list.add(ex);
}
} catch (IOException e) {
e.printStackTrace();
}

for (Capital s : list) {
double sum = 0;
for (int j = 0; j < s.grade.size() - 1; j++) {
sum += s.grade.get(j);
}
double sred = sum / s.grade.size();
s.sr = sred;
tree1.add(new Asd(s.name,s.sr));
tree2.add(new Asd(s.name,s.sr));
}
for (Asd s : tree1) {
System.out.println(s.fname);
System.out.println(s.midd);
}
}
}

Пример данных в файле:
Павлов,нп02,3,5,2,4,3,5
Иванов,нп3,5,4,5,3,5,2,4,5
Аксенов,нп02,4,5,3,4,2,4,5,5
  • Вопрос задан
  • 1368 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Dmtm
Android
в конструктор TreeSet нужно передать компаратор
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект