Java:更新产品图中的现有条目:更新此产品的购买计数

时间:2018-04-05 02:17:29

标签: java hashmap iterator

我需要使用ProductId HashMap插入或更新txt文件的条目。我不熟悉HashMap。我必须使用HashMap,即使TreeSet也可以工作。我知道我必须使用迭代器,但我不知道如何。该文件在控制台中读取,因此没有问题。

问题: 我需要引用某个productID键(即1005)来将ItemPrice更新为$ 90。

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]).getItemsPurchased();

            }
            if (ProductID.containsKey(Integer.parseInt(arr[3]))) {
                ProductID.get(arr[3]).getSingleItemPrice();

            }
        }
    }

}

}

2 个答案:

答案 0 :(得分:0)

您的问题需要更多说明

I need to insert or update an entry for a txt file using the ProductId HashMap.

如果您希望执行上述操作,那么您需要使用BufferedWriter写入文件,使用HashMap的概念很容易实际 HashMap - &gt;首先要理解这个概念,把它想象成一个银行/储物柜,以获得你需要钥匙的有价值物品/物品,hashMap的工作原理与此类似

现在,如果您只需要值
for(String str:map.values())
在你的情况下 for(Customer cust:ProductID.values()) //获取Map中所有客户价值

根据您编写的代码,我假设这是因为您没有提供整个代码,但您没有为Map分配任何值,因此您不会获得任何数据,甚至可能会得到例外

只有在需要键值和值对时才需要迭代

for (Map.Entry<Integer, Customer> entry : ProductID.entrySet()) System.out.println("Key = " + entry.getKey() + ", Customer = " + entry.getValue());

希望这有用, 快乐的编码:)

答案 1 :(得分:0)

Problem: I need to reference to a certain productID key (which is 1005) to update the ItemPrice to $90

if (ProductID.containsKey(1005)) { ProductID.get(1005).setSingleItemPrice(90); }

请更具体地说明下次你想要什么:)