Всем привет. Такой вопрос. У меня простая задача. Создать класс данных о человеке (любых). В этот класс отправляются данные(String/int/boolean) через конструктор. У меня задача организовать поиск людей по имени или по возрасту. И выдать где совпало. Реализация в отдельном методе. Как решить проблему ? Создать многомерный массив и запустить данные? Соответственно int заранее перевести в String?
public class Patient {
private String name;
private String secondName;
private String diagnosis;
private int age;
private boolean stateOfHealth; // true - здоров
Patient(String secondName, String name, String diagnosism, int age, boolean stateOfHealth) {
this.secondName = secondName;
this.name = name;
this.diagnosis = diagnosis;
this.age = age;
this.stateOfHealth = stateOfHealth;
}
public void information() {
System.out.println("Фамилия пациента: " + secondName);
System.out.println("Имя пациента: " + name);
System.out.println("Диагноз: " + diagnosis);
System.out.println("Возрост: " + age);
if (stateOfHealth)
System.out.println("Состояние: здоров");
else System.out.println("Состояние: нездоров");
}
String getSecondName() {
return secondName;
}
int getAge() {
return age;
}
public void seek(int i) {
}
public void seek(String str) {
}
}
Нельзя искать пациентов в классе пациент. В этом классе есть информация только об одном пациенте. Искать нужно в классе "Список пациентов"
class PatientList extends ArrayList<Patient> {
// Ищем пациента, удолетворяющего некторому критерию
private Patient search(Predicate<Patient> test) {
for (Patient p : this) {
if (test.test(p)) // проверяем критерий
// если удовлетворяет - возвращаем найденный объект
return p;
}
// если ничего не нашли, вернем null
return null;
}
public Patient searchByAge(int age) {
return search((p) -> return p.getAge() == age);
}
public Patient searchBySecondName(String secondName) {
return search((p) -> return p.getsecondName().equals(secondName));
}
}
Работа
// Создаем список пациентов
PatientList list = new PatientList();
// Заполняем его
list.add(new Patient(......));
list.add(new Patient(......));
...........
list.add(new Patient(......));
..........
// Ищем по возрасту 21 год
Patient p = list.searchByAge(21);
if (p != null) // если нашли - выводим информацию
p.information();
else
System.out.println("Nothing");
Можно сделать просто:
public class Patient {
private static ArrayList<Patient> allPatients = new ArrayList<Patient>();
private String name;
private String secondName;
private String diagnosis;
private int age;
private boolean stateOfHealth; // true - здоров
public Patient(String secondName, String name, String diagnosism, int age, boolean stateOfHealth) {
this.secondName = secondName;
this.name = name;
this.diagnosis = diagnosis;
this.age = age;
this.stateOfHealth = stateOfHealth;
allPatients.add(this);
}
public static ArrayList<Patient> getAllPatients() {
return allPatients;
}
public static ArrayList<Patient> seek(int age) {
ArrayList<Patient> chosenPatients = new ArrayList<Patient>();
for (Patient patient: allPatients) {
if(patient.age == age){
chosenPatients.add(patient);
}
}return chosenPatients;
}
public static ArrayList<Patient> seek(String str) {
ArrayList<Patient> chosenPatients = new ArrayList<Patient>();
for (Patient patient: allPatients) {
if(patient.name.equals(str)){
chosenPatients.add(patient);
}
}return chosenPatients;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день , углубляю знания и вот подумал а возможноли в Android передать данные из потока созданного через Thread Runnable в ui поток ?Ведь посути exchager...
Столкнулся с проблемой в самом неожиданном местеСоздана форма путем sceneBuilder и FXML и FXMLController
Приложение поддерживает несколько языков, однако на одном из языков есть дополнительные функции, для этого требуется сделать условие, что...
У меня есть объект method класса Method и аннотация MyAnnotationК сожалению, не нашел в объекте method метод вроде hasAnnotation