если у меня есть следующий файл CSV
как я могу разделить название предмета и количество и проигнорировать название магазина в списке хэш-карты?
Вот что я сделал до сих пор:
public class ListRead {
HashMap<String, Integer> csvList = new HashMap<>();
public void loadManifest() throws IOException {
FileReader ListCSV = new FileReader("list.csv");
BufferedReader reader = new BufferedReader(ListCSV);
while (true) {
String line = reader.readLine();
if (line == null) {
break;
String[] listElement = line.split(",");
System.out.println(Arrays.toString(listElement));
// add to csvList
}
}
}
Результат при печати listElement:
[>Shop A]
[shirt, 325]
[jeans, 475]
[>Shop B]
[car, 2]
[phone, 120]
[charger, 250]
Вам нужен список для обоих магазинов? А и Б?
Вы хотите сохранить информацию о том, из какого магазина поступил каждый товар?
Я хочу, чтобы имя элемента и количество сохранялись в Hashmap <String, Integer> соответственно. Игнорирование названия магазина
будет ли файл всегда иметь '>' с названием магазина?




Если вы хотите игнорировать название магазина, то подойдет простой парсер:
Map<String, Integer> map = new HashMap<>();
String line;
String currentShop = null;
while ((line = reader.readLine()) != null) {
if (!line.matches(">.*,")) {
String[] listElement = line.split(",");
map.put(listElement[0], Integer.parseInt(listElement[1]));
}
}
Логика здесь в том, что если мы встречаем строку магазина, обозначенную >, за которой следует название магазина и запятая, то мы не пытаемся проанализировать эту строку на карте. Кроме того, я предполагаю, что разделитель для строк данных - это просто запятые, а не пробелы. Если вы ожидаете пробелов, вы можете вместо этого разбить что-то вроде \s*,\s*.
Код, который вы упомянули, правильно разбирает строку. Все, что вам нужно сделать, это вставить эти элементы в созданную хэш-карту.
if (line.charAt(0)!='>')
{
int quantity = Integer.parseInt(listElement[1].trim());
String item = listElement[0].trim();
csvList.put( item , quantity);
}
Кроме того, при необходимости вы можете добавить еще одну карту для хранения названий магазинов. Приведенный выше код просто игнорирует информацию о магазине.
Желаемый результат ?? И, пожалуйста, не вставляйте скриншоты при публикации