繁体   English   中英

我如何在 Map 中存储多个键/值<string, deque<double> &gt; 一些变量名</string,>

[英]How would I store more than one key / value in a Map<String, Deque<Double>> someVariableName

我是初学者,所以请放轻松。 我必须创建一个 Stocks 程序来存储不同的 3 个字母的股票代码、股票价格和购买价格。 然后召回他们以不同的价格出售。 我遇到的问题是,当我尝试存储我的第二个库存、数量和价格时,它会从树中删除第一个库存。 如果您需要更多我的代码,请询问,但这里是我的 Map 存储键和值的方法:

    private String getPurchaseMap(String stockCode, Double quantityPurchased, Double purchasePrice) {
        Map<String, Deque<Block>> maintainStocks = new TreeMap<String, Deque<Block>>();
        var stock = new Block(stockCode, quantityPurchased, purchasePrice);
        var deque = new ArrayDeque<Block>();
        deque.offerFirst(stock);
        maintainStocks.put(stockCode, deque);
        var tempObj = maintainStocks.get(stockCode).peekFirst();
        for (var stocks : maintainStocks.entrySet()) {
            for (var test : stocks.getValue()) {
                System.out.printf("%s%n", stocks.getKey());
                System.out.println(tempObj.getQuantity());
                System.out.println(tempObj.getPrice());
            }
        }
            return null;
    }

Map.put方法将用相同键的新值替换旧值

将指定值与此 map 中的指定键关联(可选操作)。 如果 map 先前包含键的映射,则旧值将替换为指定值。 (当且仅当 m.containsKey(k) 将返回 true 时,才说 map m 包含密钥 k 的映射。)

因此,您可以使用Map中的计算方法将具有相同键的值添加到ArrayDeque 如果键不存在,则添加创建新的ArrayDeque和值,如果键已经存在,则将值添加到现有的ArrayDeque

map.compute(key, (k, v) -> (v == null) ? new ArrayDeque<Block>() : v).offerFirst(stock);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM