Как вывести все элементы arraylist с определенными именим?
class Firma {
static ArrayList<Client> clientList = new ArrayList<>();
static ArrayList<City> cityList = new ArrayList<>();
static ArrayList<Object> saleList = new ArrayList<>();
static ArrayList<Voucher> voucherList = new ArrayList<>();
public static void AddList(Client user) {
clientList.add(user);
}
public void AddList(int key_client, String name, String phone_number, String passport_id, int skidka) {
clientList.add(new Client(key_client,name,phone_number,passport_id,skidka));
}
}
class Client {
public int key_client;
public static String name;
public String phone;
public String passport_id;
public int skidka;
public Client(int key_client, String name, String phone, String passport_id, int skidka) {
this.key_client = key_client;
this.name = name;
this.phone = phone;
this.passport_id = passport_id;
this.skidka = skidka;
}
@Override
public String toString() {
return "User{" +
"key_client=" + key_client +
", name='" + name + '\'' +
", phone='" + phone + '\'' +
", passport_id='" + passport_id + '\'' +
", skidka=" + skidka +
'}';
}
}
public class Main {
public static void main(String[] args) throws ParseException {
DateFormat format = new SimpleDateFormat("d MMMM yyyy", new Locale("ru"));
Scanner scanner = new Scanner(System.in);
int key_Client = 0, id_City = 0, id_Voucher = 0, id_Sale = 0;
boolean b = true;
//Колонка Клиента
do {
key_Client++;
System.out.println("Введите имя клиента, номер телефона, номер паспорта и скидку разделяйте их двумя пробелами");
String prodStr1 = scanner.nextLine();
String[] client = prodStr1.split(" ");
Firma.AddList(new Client(key_Client,client[0], client[1], client[2], Integer.parseInt(client[3].trim())));
System.out.println("Введите Y или y для продолжения");
String check = scanner.nextLine();
if (check.contains("Y") || check.contains("y")) {
b = true;
} else {
b = false;
}
} while (b == true);
for (Object v_client : Firma.clientList)
{
System.out.println(Client.name);
}
}
Подскажите пожалуйста как мне выбрать все добавленые в список елементы с именим name и вывести их, а не только последнего пользователя
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Вывести несложно, только у вас проблема с именованием переменных, все поля по какой-то публичные и класс Firma в таком виде вообще не нужен (его реализация нарушает все принципы и паттерны, включая SOLID, GRASP).
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String searchName = "";
Scanner scanner = new Scanner(System.in);
int keyClient = 0;
List<Client> clientList = new ArrayList<>();
do {
System.out.println("Введите имя клиента, номер телефона, номер паспорта и скидку разделяйте их двумя пробелами");
String[] client = scanner.nextLine().split(" ");
clientList.add(new Client(++keyClient, client[0], client[1], client[2], Integer.parseInt(client[3].trim())));
System.out.println("Введите Y или y для продолжения");
} while ("Y".equalsIgnoreCase(scanner.nextLine().trim().toUpperCase()));
for (Client client : clientList) {
if (searchName.equals(client.getName())) {
System.out.println(client);
}
}
}
}
class Client {
private final int keyClient;
private final String name;
private final String phone;
private final String passportId;
private final int skidka;
public Client(int keyClient, String name, String phone, String passportId, int skidka) {
this.keyClient = keyClient;
this.name = name;
this.phone = phone;
this.passportId = passportId;
this.skidka = skidka;
}
public int getKeyClient() {
return keyClient;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public String getPassportId() {
return passportId;
}
public int getSkidka() {
return skidka;
}
@Override
public String toString() {
return "User{"
+ "key_client=" + keyClient
+ ", name='" + name + '\''
+ ", phone='" + phone + '\''
+ ", passport_id='" + passportId + '\''
+ ", skidka=" + skidka
+ '}';
}
}
