作者 crossoverJie

:sparkles: Introducing new features.排序 Map

@@ -2,8 +2,6 @@ package com.crossoverjie.cim.common.data.construct; @@ -2,8 +2,6 @@ package com.crossoverjie.cim.common.data.construct;
2 2
3 import java.util.Arrays; 3 import java.util.Arrays;
4 import java.util.Comparator; 4 import java.util.Comparator;
5 -import java.util.SortedMap;  
6 -import java.util.TreeMap;  
7 5
8 /** 6 /**
9 * Function:根据 key 排序的 Map 7 * Function:根据 key 排序的 Map
@@ -38,13 +36,33 @@ public class SortArrayMap { @@ -38,13 +36,33 @@ public class SortArrayMap {
38 } 36 }
39 } 37 }
40 38
41 - public void sort(){ 39 + public String firstNodeValue(int key) {
  40 + if (size == 0){
  41 + return null ;
  42 + }
  43 + for (Node bucket : buckets) {
  44 + if (bucket == null){
  45 + continue;
  46 + }
  47 + if (bucket.key >= key) {
  48 + return bucket.value;
  49 + }
  50 + }
  51 +
  52 + return buckets[0].value;
  53 +
  54 + }
  55 +
  56 + /**
  57 + * 排序
  58 + */
  59 + public void sort() {
42 Arrays.sort(buckets, 0, size, new Comparator<Node>() { 60 Arrays.sort(buckets, 0, size, new Comparator<Node>() {
43 @Override 61 @Override
44 public int compare(Node o1, Node o2) { 62 public int compare(Node o1, Node o2) {
45 - if (o1.key > o2.key){  
46 - return 1 ;  
47 - }else { 63 + if (o1.key > o2.key) {
  64 + return 1;
  65 + } else {
48 return -1; 66 return -1;
49 } 67 }
50 } 68 }
@@ -53,7 +71,7 @@ public class SortArrayMap { @@ -53,7 +71,7 @@ public class SortArrayMap {
53 71
54 public void print() { 72 public void print() {
55 for (Node bucket : buckets) { 73 for (Node bucket : buckets) {
56 - if (bucket == null){ 74 + if (bucket == null) {
57 continue; 75 continue;
58 } 76 }
59 System.out.println(bucket.toString()); 77 System.out.println(bucket.toString());
@@ -86,20 +104,4 @@ public class SortArrayMap { @@ -86,20 +104,4 @@ public class SortArrayMap {
86 104
87 } 105 }
88 106
89 -  
90 - public static void main(String[] args) {  
91 - TreeMap<Integer, String> addressRing = new TreeMap<Integer, String>();  
92 - for (int i = 0; i < 10; i++) {  
93 - addressRing.put(i, "192.168.1." + i);  
94 - }  
95 - Integer jobHash = 0;  
96 - SortedMap<Integer, String> lastRing = addressRing.tailMap(jobHash);  
97 - if (!lastRing.isEmpty()) {  
98 - System.out.println("result= " + lastRing.get(lastRing.firstKey()));  
99 - } else {  
100 - System.out.println("result=" + addressRing.firstEntry().getValue());  
101 - }  
102 -  
103 -  
104 - }  
105 } 107 }
@@ -49,6 +49,63 @@ public class SortArrayMapTest { @@ -49,6 +49,63 @@ public class SortArrayMapTest {
49 } 49 }
50 50
51 @Test 51 @Test
  52 + public void firstNode() {
  53 + SortArrayMap map = new SortArrayMap() ;
  54 +
  55 + map.add(100,"127.0.0.100");
  56 + map.add(10,"127.0.0.10");
  57 + map.add(8,"127.0.0.8");
  58 + map.add(1000,"127.0.0.1000");
  59 +
  60 + map.sort();
  61 + map.print();
  62 + String value = map.firstNodeValue(101);
  63 + System.out.println(value);
  64 + }
  65 + @Test
  66 + public void firstNode2() {
  67 + SortArrayMap map = new SortArrayMap() ;
  68 +
  69 + map.add(100,"127.0.0.100");
  70 + map.add(10,"127.0.0.10");
  71 + map.add(8,"127.0.0.8");
  72 + map.add(1000,"127.0.0.1000");
  73 +
  74 + map.sort();
  75 + map.print();
  76 + String value = map.firstNodeValue(1);
  77 + System.out.println(value);
  78 + }
  79 + @Test
  80 + public void firstNode3() {
  81 + SortArrayMap map = new SortArrayMap() ;
  82 +
  83 + map.add(100,"127.0.0.100");
  84 + map.add(10,"127.0.0.10");
  85 + map.add(8,"127.0.0.8");
  86 + map.add(1000,"127.0.0.1000");
  87 +
  88 + map.sort();
  89 + map.print();
  90 + String value = map.firstNodeValue(1001);
  91 + System.out.println(value);
  92 + }
  93 + @Test
  94 + public void firstNode4() {
  95 + SortArrayMap map = new SortArrayMap() ;
  96 +
  97 + map.add(100,"127.0.0.100");
  98 + map.add(10,"127.0.0.10");
  99 + map.add(8,"127.0.0.8");
  100 + map.add(1000,"127.0.0.1000");
  101 +
  102 + map.sort();
  103 + map.print();
  104 + String value = map.firstNodeValue(9);
  105 + System.out.println(value);
  106 + }
  107 +
  108 + @Test
52 public void add4() { 109 public void add4() {
53 SortArrayMap map = new SortArrayMap() ; 110 SortArrayMap map = new SortArrayMap() ;
54 111