Добрый день. Хочу реализовать систему подбора кандидатов с TreeSet . Но почему-то сохраняет только первое введенное значение, а дальнейшие значения не сохраняет. Как это исправить?
2. После того как я сделаю ввод нескольких значений, хочу реализовать сортировку по последним двум значениям int. Подскажите, это нормально, если я значения из TreeSet добавлю в ArrayList и затем отсортирую по последним двум значениям через Collections.sort(candidates, compareByRelandRate); , а потом выведу все значения через foreach?
Мой код ниже:
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSetClass treeSetClass = new TreeSetClass();
Scanner scanner = new Scanner(System.in);
String input = "";
printAction();
while (true) {
typeInfo();
input = scanner.nextLine();
if("".equals(input)){
break;
}
String[] candidateInfo = input.split(", ");
Candidate candidate;
if (candidateInfo.length == 5) {
candidate = new Candidate(candidateInfo[0],
candidateInfo[1],candidateInfo[2],
Integer.parseInt(candidateInfo[3]),
Integer.parseInt(candidateInfo[4]));
treeSetClass.addCandidate(candidate);
treeSetClass.displayCandidates();
}
}
}
public static void printAction() {
System.out.println("Enter the information about the candidate" +
" (enter an empty string to complete):");
}
public static void typeInfo() {
System.out.println("Surname First name Patronymic, gender, age, resume relevance, interview grade:");
}
}
import java.util.Objects;
public class Candidate implements Comparable<Candidate>{
private String name;
private String sex;
private String age;
private int relevance;
private int rating;
public Candidate(String name, String sex, String age, int relevance, int rating) {
this.name = name;
this.sex = sex;
this.age = age;
this.relevance = relevance;
this.rating = rating;
}
public int getRelevance() {
return relevance;
}
public int getRating() {
return rating;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Candidate candidate = (Candidate) o;
return relevance == candidate.relevance && rating == candidate.rating && name.equals(candidate.name) && sex.equals(candidate.sex) && age.equals(candidate.age);
}
@Override
public int hashCode() {
return Objects.hash(name, sex, age, relevance, rating);
}
@Override
public String toString() {
return "Candidate{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", age='" + age + '\'' +
", relevance=" + relevance +
", rating=" + rating +
'}';
}
@Override
public int compareTo(Candidate o) {
// Comparator<Candidate> compareByRelandRate = Comparator
// .comparing(Candidate::getRelevance)
// .thenComparing(Candidate::getRating);
// Collections.sort(candidates, compareByRelandRate);
return 0;
}
}
import java.util.*;
import java.util.Collections;
public class TreeSetClass implements Comparable<Candidate> {
Set<Candidate> candidates = new TreeSet<>();
List<Candidate> list = new ArrayList<>();
// candidates.addAll(list);
public void addCandidate(Candidate candidate) {
candidates.add(candidate);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TreeSetClass that = (TreeSetClass) o;
return Objects.equals(candidates, that.candidates);
}
@Override
public int hashCode() {
return Objects.hash(candidates);
}
public void displayCandidates() {
// Comparator<Candidate> compareByRelandRate = Comparator
// .comparing(Candidate::getRelevance)
// .thenComparing(Candidate::getRating);
//// Collections.sort(candidates, compareByRelandRate);
////
// Set<Candidate> sb =new TreeSet<Candidate>(compareByRelandRate);
// candidates.sort(Comparator.comparing(Candidate::getRelevance));
System.out.println("Candidates list: ");
for (Candidate info : candidates) {
System.out.println(info);
}
}
@Override
public int compareTo(Candidate o) {
return 0;
}
}