下面列出了java.util.SortedMap#tailMap ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private double determineDistanceDeviation() {
double dRes = 0.0;
SortedMap smDelims = identifyCandidateDelimiters(sgOverallGraph.getDataString(), 1);
int iImportant = determineImportantDelimiters(smDelims);
Iterator iIter = smDelims.keySet().iterator();
int iCnt = 0;
while (iIter.hasNext() && (iCnt++ < smDelims.size() - iImportant))
iIter.next();
smDelims = smDelims.tailMap(iIter.next());
if (!smDelims.containsValue(StreamTokenizer.TT_EOF)) {
smDelims.put((Double)smDelims.lastKey() + 0.1, new StringBuffer().append((char)StreamTokenizer.TT_EOF).toString()); // Add EOF char
}
String[] saChunks = splitStringByDelimiterPoints(sgOverallGraph.getDataString(),
splitPointsByDelimiterList(sgOverallGraph.getDataString(), smDelims));
Distribution dSizes = new Distribution();
for (iCnt=0;iCnt < saChunks.length; iCnt++) {
dSizes.setValue((double)saChunks[iCnt].length(),
dSizes.getValue((double)saChunks[iCnt].length()) + 1);
}
dRes = dSizes.average(false) + dSizes.standardDeviation(false);
return dRes;
}
private double determineDistanceDeviation() {
double dRes = 0.0;
SortedMap smDelims = identifyCandidateDelimiters(sgOverallGraph.getDataString(), 1);
int iImportant = determineImportantDelimiters(smDelims);
Iterator iIter = smDelims.keySet().iterator();
int iCnt = 0;
while (iIter.hasNext() && (iCnt++ < smDelims.size() - iImportant))
iIter.next();
smDelims = smDelims.tailMap(iIter.next());
if (!smDelims.containsValue(StreamTokenizer.TT_EOF)) {
smDelims.put((Double)smDelims.lastKey() + 0.1, new StringBuffer().append((char)StreamTokenizer.TT_EOF).toString()); // Add EOF char
}
String[] saChunks = splitStringByDelimiterPoints(sgOverallGraph.getDataString(),
splitPointsByDelimiterList(sgOverallGraph.getDataString(), smDelims));
Distribution dSizes = new Distribution();
for (iCnt=0;iCnt < saChunks.length; iCnt++) {
dSizes.setValue((double)saChunks[iCnt].length(),
dSizes.getValue((double)saChunks[iCnt].length()) + 1);
}
dRes = dSizes.average(false) + dSizes.standardDeviation(false);
return dRes;
}
private AsyncConnection<KeyValuePair<K, V>> lookupConnection(long hash, SortedMap<Long, AsyncConnection<KeyValuePair<K, V>>> ring) {
if (!ring.containsKey(hash)) {
SortedMap<Long, AsyncConnection<KeyValuePair<K, V>>> tailMap = ring.tailMap(hash);
hash = tailMap.isEmpty() ? ring.firstKey() : tailMap.firstKey();
}
return ring.get(hash);
}
@SuppressWarnings("unchecked")
@Override
public <T> Invoker<T> select(List<Invoker<T>> invokers, URL url, Invocation invocation) {
SortedMap<Integer, Invoker<?>> virtualNodes = maps.get();
// 对服务列表进行遍历,物理节点扩散成虚拟节点加入哈希环
invokers.forEach(invoker -> {
URL remoteUrl = invoker.getUrl();
// 创建virtualNodeSize个虚拟节点,均匀散布在大小为HASH_SIZE的hash环上
IntStream.range(0, VIRTUAL_NODES_PER_NODE).forEach(i -> {
String ip = remoteUrl.connectString();
// 通过键和索引值获取哈希值,性能好的hash函数能保证映射后分布均匀
int hashCode = (int) hash(ip, String.valueOf(i).intern());
// 将获取的哈希值和物理节点放入虚拟节点map中
virtualNodes.put(hashCode, invoker);
});
});
// 本地url映射到哈希环上
String localIp = url.connectString();
int location = (int) hash(localIp);
Invoker<?> node = null;
if (location > virtualNodes.lastKey()) {
//location超过范围则取第一个节点
node = virtualNodes.get(virtualNodes.firstKey());
} else {
//获取子map, 顺时针最近节点是子map的第一个节点
SortedMap<Integer, Invoker<?>> subMap = virtualNodes.tailMap(location);
node = subMap.get(subMap.firstKey());
}
Preconditions.checkNotNull(node);
return (Invoker<T>) node;
}
static int findNextUsedLine(int from, SortedMap<Integer, List<Mark>> marks) {
SortedMap<Integer, List<Mark>> next = marks.tailMap(from + 1);
if (LOG.isLoggable(Level.FINE)) {
LOG.fine("AnnotationView.findNextUsedLine from: " + from + "; marks: " + marks + "; next: " + next); //NOI18N
}
if (next.isEmpty()) {
return Integer.MAX_VALUE;
}
return next.firstKey().intValue();
}
public static void main(String[] args) {
SortedMap<Time, String> datebook = new TreeMap<Time, String>();
datebook.put(new Time(12, 30), "Lunch");
datebook.put(new Time(15, 30), "Afternoon coffee break");
datebook.put(new Time(9, 0), "Lecture");
datebook.put(new Time(13, 15), "Board Meeting");
SortedMap<Time, String> pm = datebook.tailMap(new Time(12, 0));
for (Map.Entry<Time, String> entry: pm.entrySet())
System.out.println(entry.getKey() + " " + entry.getValue());
}
static SortedMap<String, FreqValue> getCut(SortedMap<String, FreqValue> coll, String[] arr, String pattern) {
int startpos = Arrays.binarySearch(arr, pattern);
if (startpos == -1 || (startpos < 0 && !pattern.startsWith(arr[-startpos - 2]))) return null;
if (startpos < 0) {
startpos = -startpos - 2;
}
int endpos = Arrays.binarySearch(arr, startpos, arr.length, pattern + Character.MAX_VALUE);
assert(endpos < 0);
endpos = -endpos - 1;
return endpos == arr.length ?
coll.tailMap(arr[startpos]) :
coll.subMap(arr[startpos], arr[endpos]);
}
static Set<String> lookupIds(String p, String prefix, SortedMap<KeyTuple, ValueTuple> sm) {
HashSet<String> result = new HashSet<String>();
KeyTuple k = new KeyTuple(p, prefix);
SortedMap<KeyTuple, ValueTuple> lessmap = sm.tailMap(k);
for (Map.Entry<KeyTuple, ValueTuple> e : lessmap.entrySet())
{
if (!prefix.startsWith(e.getKey().prefix)) break;
result.addAll(e.getValue().urls);
}
return result;
}
static Set<String> lookupIds(String p, String prefix, SortedMap<KeyTuple, ValueTuple> sm) {
KeyTuple k = new KeyTuple(p, prefix);
SortedMap<KeyTuple, ValueTuple> t = sm.tailMap(k);
if (!t.isEmpty()) {
Map.Entry<KeyTuple, ValueTuple> e = t.entrySet().iterator().next();
if (e.getKey().prefix.startsWith(prefix)) {
return e.getValue().urls;
}
}
return new HashSet<String>(); // empty map
}
@Override
SortedMap<C, V> computeBackingRowMap() {
SortedMap<C, V> map = wholeRow();
if (map != null) {
if (lowerBound != null) {
map = map.tailMap(lowerBound);
}
if (upperBound != null) {
map = map.headMap(upperBound);
}
return map;
}
return null;
}
public Vertex getNextVertexOnDest() {
SortedMap<Long, Vertex> map = graph.getIndexedVertices().get(name);
SortedMap<Long, Vertex> tailMap = map.tailMap(timestamp + 1);
if(tailMap.isEmpty()) {
return null;
} else {
return tailMap.get(tailMap.firstKey());
}
}
public void testLowestString() {
SortedMap map = new TreeMap();
map.put("ab", "value");
map.put("z", "value");
map.put("v", "value");
SortedMap returnMap = map.tailMap(CompiledLike.LOWEST_STRING);
assertEquals(3, returnMap.size());
}
@Override
SortedMap<C, V> computeBackingRowMap() {
SortedMap<C, V> map = wholeRow();
if (map != null) {
if (lowerBound != null) {
map = map.tailMap(lowerBound);
}
if (upperBound != null) {
map = map.headMap(upperBound);
}
return map;
}
return null;
}
public synchronized List<ErrorDescription> getErrorsGE(int offset) {
try {
int index = findPositionGE(Utilities.getRowStart(doc, offset));
if (index < 0) return Collections.emptyList();
while (index < knownPositions.size()) {
Position current = knownPositions.get(index++).get();
if (current == null) {
continue;
}
List<ErrorDescription> errors = line2Errors.get(current);
if (errors != null) {
SortedMap<Integer, List<ErrorDescription>> sortedErrors = new TreeMap<Integer, List<ErrorDescription>>();
for (ErrorDescription ed : errors) {
List<ErrorDescription> errs = sortedErrors.get(ed.getRange().getBegin().getOffset());
if (errs == null) {
sortedErrors.put(ed.getRange().getBegin().getOffset(), errs = new LinkedList<ErrorDescription>());
}
errs.add(ed);
}
SortedMap<Integer, List<ErrorDescription>> tail = sortedErrors.tailMap(offset);
if (!tail.isEmpty()) {
Integer k = tail.firstKey();
return new ArrayList<ErrorDescription>(sortedErrors.get(k));
}
}
}
return Collections.emptyList();
} catch (BadLocationException ex) {
Exceptions.printStackTrace(ex);
return Collections.emptyList();
}
}
/**
* headMap returns map with keys in requested range
*/
public void testTailMapContents() {
NavigableMap map = map5();
SortedMap sm = map.tailMap(two);
assertFalse(sm.containsKey(one));
assertTrue(sm.containsKey(two));
assertTrue(sm.containsKey(three));
assertTrue(sm.containsKey(four));
assertTrue(sm.containsKey(five));
Iterator i = sm.keySet().iterator();
Object k;
k = (Integer)(i.next());
assertEquals(two, k);
k = (Integer)(i.next());
assertEquals(three, k);
k = (Integer)(i.next());
assertEquals(four, k);
k = (Integer)(i.next());
assertEquals(five, k);
assertFalse(i.hasNext());
Iterator ei = sm.entrySet().iterator();
Map.Entry e;
e = (Map.Entry)(ei.next());
assertEquals(two, e.getKey());
assertEquals("B", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(three, e.getKey());
assertEquals("C", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(four, e.getKey());
assertEquals("D", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(five, e.getKey());
assertEquals("E", e.getValue());
assertFalse(i.hasNext());
SortedMap ssm = sm.tailMap(four);
assertEquals(four, ssm.firstKey());
assertEquals(five, ssm.lastKey());
assertEquals("D", ssm.remove(four));
assertEquals(1, ssm.size());
assertEquals(3, sm.size());
assertEquals(4, map.size());
}
/**
* headMap returns map with keys in requested range
*/
public void testTailMapContents() {
NavigableMap map = map5();
SortedMap sm = map.tailMap(two);
assertFalse(sm.containsKey(one));
assertTrue(sm.containsKey(two));
assertTrue(sm.containsKey(three));
assertTrue(sm.containsKey(four));
assertTrue(sm.containsKey(five));
Iterator i = sm.keySet().iterator();
Object k;
k = (Integer)(i.next());
assertEquals(two, k);
k = (Integer)(i.next());
assertEquals(three, k);
k = (Integer)(i.next());
assertEquals(four, k);
k = (Integer)(i.next());
assertEquals(five, k);
assertFalse(i.hasNext());
Iterator ei = sm.entrySet().iterator();
Map.Entry e;
e = (Map.Entry)(ei.next());
assertEquals(two, e.getKey());
assertEquals("B", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(three, e.getKey());
assertEquals("C", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(four, e.getKey());
assertEquals("D", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(five, e.getKey());
assertEquals("E", e.getValue());
assertFalse(i.hasNext());
SortedMap ssm = sm.tailMap(four);
assertEquals(four, ssm.firstKey());
assertEquals(five, ssm.lastKey());
assertEquals("D", ssm.remove(four));
assertEquals(1, ssm.size());
assertEquals(3, sm.size());
assertEquals(4, map.size());
}
/**
* headMap returns map with keys in requested range
*/
public void testDescendingTailMapContents() {
NavigableMap map = dmap5();
SortedMap sm = map.tailMap(m2);
assertFalse(sm.containsKey(m1));
assertTrue(sm.containsKey(m2));
assertTrue(sm.containsKey(m3));
assertTrue(sm.containsKey(m4));
assertTrue(sm.containsKey(m5));
Iterator i = sm.keySet().iterator();
Object k;
k = (Integer)(i.next());
assertEquals(m2, k);
k = (Integer)(i.next());
assertEquals(m3, k);
k = (Integer)(i.next());
assertEquals(m4, k);
k = (Integer)(i.next());
assertEquals(m5, k);
assertFalse(i.hasNext());
Iterator ei = sm.entrySet().iterator();
Map.Entry e;
e = (Map.Entry)(ei.next());
assertEquals(m2, e.getKey());
assertEquals("B", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m3, e.getKey());
assertEquals("C", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m4, e.getKey());
assertEquals("D", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m5, e.getKey());
assertEquals("E", e.getValue());
assertFalse(i.hasNext());
SortedMap ssm = sm.tailMap(m4);
assertEquals(m4, ssm.firstKey());
assertEquals(m5, ssm.lastKey());
assertEquals("D", ssm.remove(m4));
assertEquals(1, ssm.size());
assertEquals(3, sm.size());
assertEquals(4, map.size());
}
/**
* headMap returns map with keys in requested range
*/
public void testDescendingTailMapContents() {
ConcurrentNavigableMap map = dmap5();
SortedMap sm = map.tailMap(m2);
assertFalse(sm.containsKey(m1));
assertTrue(sm.containsKey(m2));
assertTrue(sm.containsKey(m3));
assertTrue(sm.containsKey(m4));
assertTrue(sm.containsKey(m5));
Iterator i = sm.keySet().iterator();
Object k;
k = (Integer)(i.next());
assertEquals(m2, k);
k = (Integer)(i.next());
assertEquals(m3, k);
k = (Integer)(i.next());
assertEquals(m4, k);
k = (Integer)(i.next());
assertEquals(m5, k);
assertFalse(i.hasNext());
Iterator ei = sm.entrySet().iterator();
Map.Entry e;
e = (Map.Entry)(ei.next());
assertEquals(m2, e.getKey());
assertEquals("B", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m3, e.getKey());
assertEquals("C", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m4, e.getKey());
assertEquals("D", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m5, e.getKey());
assertEquals("E", e.getValue());
assertFalse(i.hasNext());
SortedMap ssm = sm.tailMap(m4);
assertEquals(m4, ssm.firstKey());
assertEquals(m5, ssm.lastKey());
assertEquals("D", ssm.remove(m4));
assertEquals(1, ssm.size());
assertEquals(3, sm.size());
assertEquals(4, map.size());
}
/**
* headMap returns map with keys in requested range
*/
public void testDescendingTailMapContents() {
NavigableMap map = dmap5();
SortedMap sm = map.tailMap(m2);
assertFalse(sm.containsKey(m1));
assertTrue(sm.containsKey(m2));
assertTrue(sm.containsKey(m3));
assertTrue(sm.containsKey(m4));
assertTrue(sm.containsKey(m5));
Iterator i = sm.keySet().iterator();
Object k;
k = (Integer)(i.next());
assertEquals(m2, k);
k = (Integer)(i.next());
assertEquals(m3, k);
k = (Integer)(i.next());
assertEquals(m4, k);
k = (Integer)(i.next());
assertEquals(m5, k);
assertFalse(i.hasNext());
Iterator ei = sm.entrySet().iterator();
Map.Entry e;
e = (Map.Entry)(ei.next());
assertEquals(m2, e.getKey());
assertEquals("B", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m3, e.getKey());
assertEquals("C", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m4, e.getKey());
assertEquals("D", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(m5, e.getKey());
assertEquals("E", e.getValue());
assertFalse(i.hasNext());
SortedMap ssm = sm.tailMap(m4);
assertEquals(m4, ssm.firstKey());
assertEquals(m5, ssm.lastKey());
assertEquals("D", ssm.remove(m4));
assertEquals(1, ssm.size());
assertEquals(3, sm.size());
assertEquals(4, map.size());
}
/**
* headMap returns map with keys in requested range
*/
public void testTailMapContents() {
ConcurrentNavigableMap map = map5();
SortedMap sm = map.tailMap(two);
assertFalse(sm.containsKey(one));
assertTrue(sm.containsKey(two));
assertTrue(sm.containsKey(three));
assertTrue(sm.containsKey(four));
assertTrue(sm.containsKey(five));
Iterator i = sm.keySet().iterator();
Object k;
k = (Integer)(i.next());
assertEquals(two, k);
k = (Integer)(i.next());
assertEquals(three, k);
k = (Integer)(i.next());
assertEquals(four, k);
k = (Integer)(i.next());
assertEquals(five, k);
assertFalse(i.hasNext());
Iterator ei = sm.entrySet().iterator();
Map.Entry e;
e = (Map.Entry)(ei.next());
assertEquals(two, e.getKey());
assertEquals("B", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(three, e.getKey());
assertEquals("C", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(four, e.getKey());
assertEquals("D", e.getValue());
e = (Map.Entry)(ei.next());
assertEquals(five, e.getKey());
assertEquals("E", e.getValue());
assertFalse(i.hasNext());
SortedMap ssm = sm.tailMap(four);
assertEquals(four, ssm.firstKey());
assertEquals(five, ssm.lastKey());
assertEquals("D", ssm.remove(four));
assertEquals(1, ssm.size());
assertEquals(3, sm.size());
assertEquals(4, map.size());
}