package main import ( "fmt" "github.com/wangjia184/sortedset" ) func main(){ sortedset := sortedset.New() sortedset.AddOrUpdate("a", 89, "Kelly") sortedset.AddOrUpdate("b", 100, "Staley") sortedset.AddOrUpdate("c", 100, "Jordon") sortedset.AddOrUpdate("d", -321, "Park") sortedset.AddOrUpdate("e", 101, "Albert") sortedset.AddOrUpdate("f", 99, "Lyman") sortedset.AddOrUpdate("g", 99, "Singleton") sortedset.AddOrUpdate("h", 70, "Audrey") sortedset.AddOrUpdate("e", 99, "ntrnrt") sortedset.AddOrUpdate("e", 99, "ntrnrt") sortedset.AddOrUpdate("e", 99, "ntrnrt") sortedset.AddOrUpdate("e", 99, "ntrnrt") sortedset.AddOrUpdate("e", 99, "ntrnrt") sortedset.Remove("b") all := sortedset.GetByRankRange(-1, 1, false) fmt.Println("len ==>", len(all) ) node := sortedset.GetByRank(3, false) if node == nil || node.Key() != "a" { fmt.Println("GetByRank() does not return expected value `a`") } node = sortedset.GetByRank(-3, false) if node == nil || node.Key() != "f" { fmt.Println("GetByRank() does not return expected value `f`") } // get all nodes since the first one to last one nodes := sortedset.GetByRankRange(1, -1, false) checkOrder( nodes, []string{"d", "h", "a", "e", "f", "g", "c"}) } func checkOrder(nodes []*sortedset.SortedSetNode, expectedOrder []string) { if len(expectedOrder) != len(nodes) { fmt.Printf("nodes does not contain %d elements", len(expectedOrder)) } for i := 0; i < len(expectedOrder); i++ { if nodes[i].Key() != expectedOrder[i] { fmt.Printf("nodes[%d] is %q, but the expected key is %q", i, nodes[i].Key(), expectedOrder[i]) } } }