MCPcopy Create free account
hub / github.com/e2wugui/zeze / add

Method add

ZezeJava/ZezeJava/src/main/java/Zeze/Collections/Queue.java:308–328  ·  view source on GitHub ↗

用作queue, 值追加到尾节点的最后, 满则追加一个尾节点。

(V value)

Source from the content-addressed store, hash-verified

306 * 用作queue, 值追加到尾节点的最后, 满则追加一个尾节点。
307 */
308 public void add(V value) {
309 var root = getOrAddRoot();
310 var tailNodeKey = root.getTailNodeKey();
311 var tail = tailNodeKey.getNodeId() != 0 ? getNode(tailNodeKey) : null; // 比起直接访问快一些。
312 if (tail == null || tail.getValues().size() >= nodeSize) {
313 var newNodeId = root.getLastNodeId() + 1;
314 root.setLastNodeId(newNodeId);
315 var newNodeKey = new BQueueNodeKey(name, newNodeId);
316 root.setTailNodeKey(newNodeKey);
317 if (root.getHeadNodeKey().getNodeId() == 0)
318 root.setHeadNodeKey(newNodeKey);
319 if (tail != null)
320 tail.setNextNodeKey(newNodeKey);
321 module._tQueueNodes.insert(newNodeKey, tail = new BQueueNode());
322 root.setCount(root.getCount() + 1);
323 }
324 var nodeValue = new BQueueNodeValue();
325 nodeValue.setTimestamp(System.currentTimeMillis());
326 nodeValue.getValue().setBean(value);
327 tail.getValues().add(nodeValue);
328 }
329
330 /**
331 * 用作stack, 值追加到头节点的首位, 满则追加一个头节点

Callers

nothing calls this directly

Calls 15

getOrAddRootMethod · 0.95
getNodeMethod · 0.95
setTimestampMethod · 0.95
getValueMethod · 0.95
setTailNodeKeyMethod · 0.80
setHeadNodeKeyMethod · 0.80
setNextNodeKeyMethod · 0.80
getTailNodeKeyMethod · 0.65
getNodeIdMethod · 0.65
sizeMethod · 0.65
getLastNodeIdMethod · 0.65
getHeadNodeKeyMethod · 0.65

Tested by

no test coverage detected