[英]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.