-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSkipListNode.java
More file actions
74 lines (66 loc) · 1.69 KB
/
SkipListNode.java
File metadata and controls
74 lines (66 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package collection.list;
/**
* 跳跃表节点
* @author zqw
* @date 2023/12/9
*/
public class SkipListNode<E> {
/**
* 成员对象
*/
E obj;
/**
* 分值
*/
double score;
/**
* 后退指针
*/
SkipListNode<E> backward;
SkipListLevel<E>[] level;
/**
* 层
*/
static class SkipListLevel<E> {
/**
* 前进指针
*/
SkipListNode<E> forward;
/**
* 跨度
*/
long span;
}
@SuppressWarnings("unchecked")
public SkipListNode(int level, double score, E obj) {
/*创建一个层数为 level 的跳跃表节点, 并将节点的成员对象设置为 obj, 分值设置为 score*/
this.level = new SkipListLevel[level];
for (int i = 0; i < level; i++) {
this.level[i] = new SkipListLevel<>();
this.level[i].forward = null;
this.level[i].span = 0;
}
this.obj = obj;
this.score = score;
this.backward = null;
}
@Override
public String toString() {
int levelCount = level == null ? 0 : level.length;
StringBuilder spans = new StringBuilder("[");
for (int i = 0; i < levelCount; i++) {
spans.append(level[i].span);
if (i < levelCount - 1) {
spans.append(", ");
}
}
spans.append("]");
return "SkipListNode{" +
"obj=" + obj +
", score=" + score +
", levelCount=" + levelCount +
", levelSpans=" + spans +
", backward=" + (backward == null ? "null" : backward.obj) +
'}';
}
}