如何在Java TreeMap中选择前N个项目?

给定这张地图
SortedMap<Integer,String> myMap = new TreeMap<Integer,String>();

而不是for循环是否有一个效用函数将前N个项目复制到目标地图?

解决方法

也许,但不是标准Java API的一部分.并且:该实用程序将使用一个循环.

所以你需要一个循环,但是你可以通过在一个实用程序类中的一个静态方法中创建自己的“实用程序”:

public static SortedMap<K,V> putFirstEntries(int max,SortedMap<K,V> source) {
  int count = 0;
  TreeMap<K,V> target = new TreeMap<K,V>();
  for (Map.Entry<K,V> entry:source.entrySet()) {
     if (count >= max) break;

     target.put(entry.getKey(),entry.getValue());
     count++;
  }
  return target;
}

复杂度仍然是O(n)(我怀疑,可以实现O(1)),但是您可以像工具那样使用它,而不会看到循环:

SortedMap<Integer,String> firstFive = Util.putFirstEntries(5,sourceMap);

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...