Я читаю 2 файла CSV: store_inventory
& new_acquisitions
.
Я хочу смочь выдержать сравнение store_inventory
файл CSV с new_acquisitions
. 1) Если соответствие названий товара просто обновляет количество в store_inventory. 2) Если new_acquisitions имеет новый объект, который не существует в store_inventory
, затем добавьте его к store_inventory
.
Вот то, что я сделал до сих пор, но его не очень хорошее. Я добавил комментарии, где я должен добавить гвозди 1 и 2.
Любой совет или код, чтобы сделать вышеупомянутые задачи были бы большими!спасибо.
File new_acq = new File("/src/test/new_acquisitions.csv");
Scanner acq_scan = null;
try {
acq_scan = new Scanner(new_acq);
} catch (FileNotFoundException ex) {
Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
}
String itemName;
int quantity;
Double cost;
Double price;
File store_inv = new File("/src/test/store_inventory.csv");
Scanner invscan = null;
try {
invscan = new Scanner(store_inv);
} catch (FileNotFoundException ex) {
Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
}
String itemNameInv;
int quantityInv;
Double costInv;
Double priceInv;
while (acq_scan.hasNext()) {
String line = acq_scan.nextLine();
if (line.charAt(0) == '#') {
continue;
}
String[] split = line.split(",");
itemName = split[0];
quantity = Integer.parseInt(split[1]);
cost = Double.parseDouble(split[2]);
price = Double.parseDouble(split[3]);
while(invscan.hasNext()) {
String line2 = invscan.nextLine();
if (line2.charAt(0) == '#') {
continue;
}
String[] split2 = line2.split(",");
itemNameInv = split2[0];
quantityInv = Integer.parseInt(split2[1]);
costInv = Double.parseDouble(split2[2]);
priceInv = Double.parseDouble(split2[3]);
if(itemName == itemNameInv) {
//update quantity
}
}
//add new entry into csv file
}
Еще раз спасибо за любую справку. =]
Предложите использовать один из существующих парсеров CSV, например Commons CSV или Super CSV, вместо того, чтобы изобретать колесо. Это значительно облегчит вам жизнь.
Выполняемая вами операция потребует, чтобы для каждого предмета в ваших новых приобретениях вам нужно было искать соответствие каждому предмету в инвентаре. Это не только неэффективно, но и сканер, который вы настроили для файла инвентаризации, необходимо будет сбрасывать после каждого элемента.
Я бы посоветовал вам добавить свои новые приобретения и свой инвентарь в коллекции, а затем перебрать свои новые приобретения и найти новый элемент в своей коллекции инвентаря. Если элемент существует, обновите его. Если это не так, добавьте его в коллекцию инвентаря. Для этого действия было бы неплохо написать простой класс, содержащий элемент инвентаря. Его можно было использовать как для новых поступлений, так и для инвентаризации. Для быстрого поиска я бы посоветовал вам использовать HashSet или HashMap для вашей коллекции инвентаря.
В конце процесса не забудьте сохранить изменения в файле инвентаря.