如何在Java中使用TreeMap计算数组右侧的较小元素?

时间:2018-09-09 19:40:20

标签: java collections tree

我试图实现这一点,但它显示nullPointerException: 它的基本作用是使用lowerKey()方法找到比A [i]低的第一个元素,然后找到上述元素与地图起点之间的距离。

 public static void main(String...aks){
    Integer arr[] = {12, 1, 2, 3, 0, 11, 4 };

   TreeMap<Integer, Integer> treeMap=new TreeMap<Integer, Integer>();
   int[] count=new int[arr.length];
   for (int i=arr.length-1;i>=0;i--){
       treeMap.put(arr[i], 1);
   }

    for (int j=arr.length-1;j>=0;j--) {
        int lowerKey = treeMap.lowerKey(arr[j]);
        count[j] = treeMap.headMap(lowerKey).size();
    }
    for(int elem: count) {
        System.out.println(elem);
    }

1 个答案:

答案 0 :(得分:1)

lowerKey的文档:

  

返回严格小于给定键的最大键;如果返回最大键,则返回null   没有这样的钥匙。

这意味着它将返回null并保留最小的数组,因此在调用headMap时失败,因为来自headMap的文档:

  

NullPointerException-如果toKey为null并且此映射使用自然   排序,或者其比较器不允许使用空键