Как парсить объект типа Map из csv?

Я работаю над записью и чтением классов в CSV-файл. Один из классов имеет поле Map. (Я пытаюсь ввести в заказ значения блюд, которые заказал клиент)

public class Order {
...
  private long id;
  private double totalCost;
  private Map<FoodItem, Long> menu;
...
}

Cейчас мой конвертер CSV to / from выглядит следующим образом:

public class OrderConverterCSV implements Converter<Order> {

    @Override
    public String[] toCsv(Order order) {
        return new String[]{
                String.valueOf(order.getId()),
                String.valueOf(order.getTotalCost()),
                String.valueOf(order.getMenu())
        };
    }

    @Override
    public Order fromCsv(String[] csvData) {
        return new Order(
                Long.parseLong(csvData[0]),
                Double.parseDouble(csvData[4]),
                Map.(csvData[5])//???
        );
    }

  • Как правильно парсить это поле?
  • Как я могу позже указать, какое значение блюда сохранить при сохранении в CSV?
  • И наконец, может быть, я зря использую Map и должен использовать список или массив?


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

Автор решения: Олексій Моренець
@Override
public Order fromCsv(String[] csvData) {
    Map<Integer, String> map = new HashMap<>();
    // заполняем map
    // map.put(someKey, csvData[5]);

    return new Order(
            Long.parseLong(csvData[0]),
            Double.parseDouble(csvData[4]),
            map
    );
}
→ Ссылка