Как сделать, чтобы пользователь мог вводить название телефонов и фирмы сам, не трогая код?

    public static void main(String[] args) {

        
        Scanner in = new Scanner(System.in);


        Stream<Phone> phoneStream = Stream.of(new Phone("Iphone X", "Apple"));
        
        Map<String, List<Phone>> phonesByCompany = phoneStream.collect(
                Collectors.groupingBy(Phone::getCompany));
          
        for(Map.Entry<String, List<Phone>> item : phonesByCompany.entrySet()){
              
            System.out.println(item.getKey());
            for(Phone phone : item.getValue()){
                  
                System.out.println(phone.getName());
            }
            System.out.println();
    }
    
}
}

код класса Phone

    public class Phone {
    
    private String name;
    private String company;
    
    
    public Phone(String name, String comp){
        this.name=name;
        this.company=comp;
        
    }
    
    public String getName() { return name; } 
    public String getCompany() { return company; }
    
}

Ответы (1 шт):

Автор решения: Dewerro
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Введите названия телефонов через запятую (Apple Iphone X, Samsung Galaxy): ");
        String line = scanner.nextLine();
        String[] array = line.split(",");

        ArrayList<Phone> list = new ArrayList<>();

        for (String str : array) {
            list.add(new Phone(str.substring(str.indexOf(' ') + 1), str.substring(0, str.indexOf(' '))));
        }

        for (Phone phone : list) {
            System.out.println("Компания " + phone.getCompany() + "; Название " + phone.getName());
        }
    }
→ Ссылка