Поиск елмента в списке если он повторяеться несколько раз в списке?

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
                }
            }
        
→ Ссылка