Поиск елмента в списке если он повторяеться несколько раз в списке?
public class Menu {
Scanner scanner = new Scanner(System.in);
static List<String> listSouvenirs = new ArrayList<>();
static List<String> listManufacturer = new ArrayList<>();
static List<String> list = new ArrayList<>();
public static void listAddSouvenirs(Souvenirs s){
listSouvenirs.add(s.getName());
listSouvenirs.add(s.getInfo());
listSouvenirs.add(s.getDate());
listSouvenirs.add(s.getPrice());
}
public static void listAddManufacturer(Manufacturer m){
listManufacturer.add(m.getName());
listManufacturer.add(m.getCountry());
}
public int menu1(){
boolean b;
do {
System.out.println("Введите имя продукта, информацию от производителя, дату изготовления и цену");
String prodStr1 = scanner.nextLine();
String[] souvenirs = prodStr1.split(" ");
Menu.listAddSouvenirs(new Souvenirs(souvenirs[0], souvenirs[1], souvenirs[2], souvenirs[3]));
System.out.println("Введите имя производителя, город производителя");
String prodStr2 = scanner.nextLine();
String[] manufacturer = prodStr2.split(" ");
Menu.listAddManufacturer(new Manufacturer(manufacturer[0], manufacturer[1]));
System.out.println("Введите Y или y для продолжения");
String check = scanner.nextLine().toLowerCase();
b = check.contains("Y".toLowerCase());
} while (b);
return 1;
}
public int menu4(){
System.out.println("Введите производителя что бы получить информацию");
String el = scanner.nextLine();
if (listManufacturer.contains(el)) {
int position = listManufacturer.indexOf(el);
System.out.println(listManufacturer.get(position+1));
System.out.println(listManufacturer.get(position));
int position2 = position / 2 * 4;
System.out.println(listSouvenirs.get(position2 + 3));
System.out.println(listSouvenirs.get(position2 + 2));
System.out.println(listSouvenirs.get(position2 + 1));
System.out.println(listSouvenirs.get(position2));
}
return 4;
}
}
У меня есть например производитель a1,a2,a3, но a1 повторяеться несколько раз в списке как сделать так что бы находились все его упоминания там и к ним применлся соотвествующий код, а не только к значению которое находит первым в списке
Ответы (1 шт):
Автор решения: kio
→ Ссылка
Если требуется найти все вхождения элемента в списке, то вероятно лучше использовать старый способ через перебор:
for(String str : listManufacturer) {
if(str.equals(el)) {
// что то делаем с str
}
}
// используем, если нам необходима позиция для каких-то операций в дальнейшем
for(int i = 0; i<listManufacturer.size(); i++) {
String str = listManufacturer.get(i);
if(str.equals(el)) {
// что то делаем с str
}
}