У меня есть следующие классы:
public class Student {
String studentId;
List subjects;
//+Getters, setters, constructors
}
public class Subject {
int subjectId;
String grade;
int marks;
//+Getters, setters, constructors
}
Пример ввода:
Student S1 subjects=[1, A, 90], [2, B, 80], [2, C, 70]
Student S1 subjects=[2, A+, 95], [3,C,70]
Student S2 subjects=[1, D, 50]
Student S2 subjects=[1, D, 50]
Пример вывода:
Student S1 subjects=[1, A, 90], [2, A+, 95], [3,C,70] //Subject 2 is selected based on highest marks
Student S2 subjects=[1, D, 50] //Avoided duplicate for same mark
Я хочу реализовать функцию консолидации и устранения дублирования. Функция должна возвращать один идентификатор учащегося только один раз.
Каждый идентификатор учащегося должен содержать каждый идентификатор предмета, который появился внутри этого учащегося только один раз. Идентификатор предмета следует выбирать по наивысшим оценкам.
public List consolidate (List students)
{
List consolidatedStudents = new ArrayList();
//???
return consolidatedStudents;
}
Как этого добиться наиболее эффективным способом?
Пример основного класса для тестирования
public class Main {
public static void main(String args[])
{
List s1Subjects_1 = new ArrayList();
List s1Subjects_2 = new ArrayList();
Subject s1Physics = new Subject(1,"A",90);
Subject s1Chemistry_1 = new Subject(2,"B",80);
Subject s1Chemistry_2 = new Subject(2,"C",70);
Subject s1Chemistry_3 = new Subject(2,"A+",95);
Subject s1Biology = new Subject(3,"C",70);
s1Subjects_1.add(s1Physics);
s1Subjects_1.add(s1Chemistry_1);
s1Subjects_1.add(s1Chemistry_2);
s1Subjects_2.add(s1Chemistry_3);
s1Subjects_2.add(s1Biology);
List s2Subjects_1 = new ArrayList();
List s2Subjects_2 = new ArrayList();
Subject s2Physics_1 = new Subject(1,"D",50);
Subject s2Physics_2 = new Subject(1,"D",50);
s2Subjects_1.add(s2Physics_1);
s2Subjects_2.add(s2Physics_2);
Student s1_1 = new Student("s1", s1Subjects_1);
Student s1_2 = new Student("s1", s1Subjects_2);
Student s2_1 = new Student("s2", s2Subjects_1);
Student s2_2 = new Student("s2", s2Subjects_2);
List input = new ArrayList();
input.add(s1_1);
input.add(s1_2);
input.add(s2_1);
input.add(s2_2);
List output = consolidate(input);
}
public static List consolidate (List students)
{
List consolidatedStudents = new ArrayList();
//
//???
//
return consolidatedStudents;
}
}
Подробнее здесь: https://stackoverflow.com/questions/693 ... by-maximum
Группировать, объединять и дедупировать элементы в коллекции Java по максимуму. ⇐ JAVA
Программисты JAVA общаются здесь
1731053875
Anonymous
У меня есть следующие классы:
public class Student {
String studentId;
List subjects;
//+Getters, setters, constructors
}
public class Subject {
int subjectId;
String grade;
int marks;
//+Getters, setters, constructors
}
Пример ввода:
Student S1 subjects=[1, A, 90], [2, B, 80], [2, C, 70]
Student S1 subjects=[2, A+, 95], [3,C,70]
Student S2 subjects=[1, D, 50]
Student S2 subjects=[1, D, 50]
Пример вывода:
Student S1 subjects=[1, A, 90], [2, A+, 95], [3,C,70] //Subject 2 is selected based on highest marks
Student S2 subjects=[1, D, 50] //Avoided duplicate for same mark
Я хочу реализовать функцию консолидации и устранения дублирования. Функция должна возвращать один идентификатор учащегося только один раз.
Каждый идентификатор учащегося должен содержать каждый идентификатор предмета, который появился внутри этого учащегося только один раз. Идентификатор предмета следует выбирать по наивысшим оценкам.
public List consolidate (List students)
{
List consolidatedStudents = new ArrayList();
//???
return consolidatedStudents;
}
Как этого добиться наиболее эффективным способом?
Пример основного класса для тестирования
public class Main {
public static void main(String args[])
{
List s1Subjects_1 = new ArrayList();
List s1Subjects_2 = new ArrayList();
Subject s1Physics = new Subject(1,"A",90);
Subject s1Chemistry_1 = new Subject(2,"B",80);
Subject s1Chemistry_2 = new Subject(2,"C",70);
Subject s1Chemistry_3 = new Subject(2,"A+",95);
Subject s1Biology = new Subject(3,"C",70);
s1Subjects_1.add(s1Physics);
s1Subjects_1.add(s1Chemistry_1);
s1Subjects_1.add(s1Chemistry_2);
s1Subjects_2.add(s1Chemistry_3);
s1Subjects_2.add(s1Biology);
List s2Subjects_1 = new ArrayList();
List s2Subjects_2 = new ArrayList();
Subject s2Physics_1 = new Subject(1,"D",50);
Subject s2Physics_2 = new Subject(1,"D",50);
s2Subjects_1.add(s2Physics_1);
s2Subjects_2.add(s2Physics_2);
Student s1_1 = new Student("s1", s1Subjects_1);
Student s1_2 = new Student("s1", s1Subjects_2);
Student s2_1 = new Student("s2", s2Subjects_1);
Student s2_2 = new Student("s2", s2Subjects_2);
List input = new ArrayList();
input.add(s1_1);
input.add(s1_2);
input.add(s2_1);
input.add(s2_2);
List output = consolidate(input);
}
public static List consolidate (List students)
{
List consolidatedStudents = new ArrayList();
//
//???
//
return consolidatedStudents;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/69332713/group-combine-and-dedup-elements-in-a-java-collection-by-maximum[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия