作者 crossoverJie

:sparkles: Introducing new features.排序 Map

... ... @@ -2,8 +2,6 @@ package com.crossoverjie.cim.common.data.construct;
import java.util.Arrays;
import java.util.Comparator;
import java.util.SortedMap;
import java.util.TreeMap;
/**
* Function:根据 key 排序的 Map
... ... @@ -38,13 +36,33 @@ public class SortArrayMap {
}
}
public void sort(){
public String firstNodeValue(int key) {
if (size == 0){
return null ;
}
for (Node bucket : buckets) {
if (bucket == null){
continue;
}
if (bucket.key >= key) {
return bucket.value;
}
}
return buckets[0].value;
}
/**
* 排序
*/
public void sort() {
Arrays.sort(buckets, 0, size, new Comparator<Node>() {
@Override
public int compare(Node o1, Node o2) {
if (o1.key > o2.key){
return 1 ;
}else {
if (o1.key > o2.key) {
return 1;
} else {
return -1;
}
}
... ... @@ -53,7 +71,7 @@ public class SortArrayMap {
public void print() {
for (Node bucket : buckets) {
if (bucket == null){
if (bucket == null) {
continue;
}
System.out.println(bucket.toString());
... ... @@ -86,20 +104,4 @@ public class SortArrayMap {
}
public static void main(String[] args) {
TreeMap<Integer, String> addressRing = new TreeMap<Integer, String>();
for (int i = 0; i < 10; i++) {
addressRing.put(i, "192.168.1." + i);
}
Integer jobHash = 0;
SortedMap<Integer, String> lastRing = addressRing.tailMap(jobHash);
if (!lastRing.isEmpty()) {
System.out.println("result= " + lastRing.get(lastRing.firstKey()));
} else {
System.out.println("result=" + addressRing.firstEntry().getValue());
}
}
}
... ...
... ... @@ -49,6 +49,63 @@ public class SortArrayMapTest {
}
@Test
public void firstNode() {
SortArrayMap map = new SortArrayMap() ;
map.add(100,"127.0.0.100");
map.add(10,"127.0.0.10");
map.add(8,"127.0.0.8");
map.add(1000,"127.0.0.1000");
map.sort();
map.print();
String value = map.firstNodeValue(101);
System.out.println(value);
}
@Test
public void firstNode2() {
SortArrayMap map = new SortArrayMap() ;
map.add(100,"127.0.0.100");
map.add(10,"127.0.0.10");
map.add(8,"127.0.0.8");
map.add(1000,"127.0.0.1000");
map.sort();
map.print();
String value = map.firstNodeValue(1);
System.out.println(value);
}
@Test
public void firstNode3() {
SortArrayMap map = new SortArrayMap() ;
map.add(100,"127.0.0.100");
map.add(10,"127.0.0.10");
map.add(8,"127.0.0.8");
map.add(1000,"127.0.0.1000");
map.sort();
map.print();
String value = map.firstNodeValue(1001);
System.out.println(value);
}
@Test
public void firstNode4() {
SortArrayMap map = new SortArrayMap() ;
map.add(100,"127.0.0.100");
map.add(10,"127.0.0.10");
map.add(8,"127.0.0.8");
map.add(1000,"127.0.0.1000");
map.sort();
map.print();
String value = map.firstNodeValue(9);
System.out.println(value);
}
@Test
public void add4() {
SortArrayMap map = new SortArrayMap() ;
... ...