Java:使用ProductID HashMap中的密钥,更新此产品的购买计数

时间:2018-04-05 05:13:57

标签: java hashmap iterator

应在产品地图中使用密钥5020更新条目,将购买次数增加2.

我不确定如何使用ProductID.put对我拥有的Sales.txt文件的条目进行必要的更改。文件的内容显示完美但我不知道如何使用更改来更新文件。

我想我需要在某些时候使用迭代器。但我不熟悉HashMap。

public class StoreSales {


public static void main(String[] args) {
    List<Customer> customer = new ArrayList<>();

    try {

        readFile("Sales.txt", customer);

    } catch (Exception ex) {
        ex.printStackTrace();
    }
    System.out.println(customer);

}

public static void readFile(String file, List<Customer> cust) throws IOException, ClassNotFoundException {
    Map<Integer, Customer> CustomerID = new HashMap<>();
    Map<Integer, Customer> ProductID = new HashMap<>();
    try (BufferedReader in = new BufferedReader(new FileReader(file))) {
        String line;
        while ((line = in.readLine()) != null) {
            String[] arr = line.split(" ");
            cust.add(new Customer(Integer.parseInt(arr[0]), arr[1], arr[2], Integer.parseInt(arr[3]), arr[4], Double.parseDouble(arr[5]), Integer.parseInt(arr[6])));

            if (CustomerID.containsKey(Integer.parseInt(arr[0]))) {
                CustomerID.get(arr[0]).getSingleItemPrice();

            }
            if (ProductID.containsKey(Integer.parseInt(arr[3]))) {
                ProductID.get(arr[3]).getItemsPurchased();
                **this is the problem** //ProductID.put(, 2++);


            }
        }
    }

}

}

1 个答案:

答案 0 :(得分:0)

从地图中获取对象将为您提供对可以操作的对象的引用。

Customer c = ProductID.get(arr[3]);
c.setItemsPurchased(c.getItemsPurchased() + 2);

但是就像Nishit在评论中指出的那样,if语句总是错误的,因为你从未在地图中添加任何内容。