用作stack, 值追加到头节点的首位, 满则追加一个头节点
(V value)
| 331 | * 用作stack, 值追加到头节点的首位, 满则追加一个头节点 |
| 332 | */ |
| 333 | public void push(V value) { |
| 334 | var root = getOrAddRoot(); |
| 335 | var headNodeKey = root.getHeadNodeKey(); |
| 336 | var head = headNodeKey.getNodeId() != 0 ? getNode(headNodeKey) : null; |
| 337 | if (head == null || head.getValues().size() >= nodeSize) { |
| 338 | var newNodeId = root.getLastNodeId() + 1; |
| 339 | root.setLastNodeId(newNodeId); |
| 340 | var newNodeKey = new BQueueNodeKey(name, newNodeId); |
| 341 | root.setHeadNodeKey(newNodeKey); |
| 342 | if (root.getTailNodeKey().getNodeId() == 0) |
| 343 | root.setTailNodeKey(newNodeKey); |
| 344 | module._tQueueNodes.insert(newNodeKey, head = new BQueueNode()); |
| 345 | root.setCount(root.getCount() + 1); |
| 346 | if (headNodeKey.getNodeId() != 0) |
| 347 | head.setNextNodeKey(headNodeKey); |
| 348 | } |
| 349 | var nodeValue = new BQueueNodeValue(); |
| 350 | nodeValue.setTimestamp(System.currentTimeMillis()); |
| 351 | nodeValue.getValue().setBean(value); |
| 352 | head.getValues().add(0, nodeValue); |
| 353 | } |
| 354 | |
| 355 | /** |
| 356 | * 删除并返回头节点中的首个值 |