[java]创建一个默认TreeMap() key为什么不能为null

摘要:
=空);}看看比较方法finantcompare{returncomparator==null?

 本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。

先看一下 TreeMap 的 put(K key, V value)

public TreeMap() {
comparator = null;
}

public V put(K key, V value) { Entry<K,V> t = root; if (t == null) { compare(key, key); // type (and possibly null) check root = new Entry<>(key, value, null); size = 1; modCount++; return null; } int cmp; Entry<K,V> parent; // split comparator and comparable paths Comparator<? super K> cpr = comparator; if (cpr != null) { do { parent = t; cmp = cpr.compare(key, t.key); if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else return t.setValue(value); } while (t != null); }

 再看看 compare(key, key)这个方法

final int compare(Object k1, Object k2) {
    return comparator==null ? ((Comparable<? super K>)k1).compareTo((K)k2)
        : comparator.compare((K)k1, (K)k2);
}

 如果我们创建一个默认TreeMap() 如下 会报空指针异常  

  SortedMap map  =  new TreeMap<>();
  //在 上面的compare(key, key) 的方法中  红色 即为 null.compareTo(null) 程序抛出  java.lang.NullPointerException
  map.put(null,"");

免责声明:文章转载自《[java]创建一个默认TreeMap() key为什么不能为null》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ParseCrontab类,解析时间规则GetCursorPos下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

django-QueryDict

django-QueryDict 对象 在HttpRequest对象中,属性 GET 和 POST 得到的都是django.http.QueryDict所创建的实例。这是一个 django 自定义的类似字典的类,用来处理同一个键带多个值的情况。 在 python 原始的字典中,当一个键出现多个值的时候会发生冲突,只保留最后一个值。而在 HTML 表单中...

SpringMVC源码阅读HandlerMapping初始化-AbstractHandlerMapping(五)

接口 public interface HandlerMapping { /** * 根据requst获得 对应的Handler * @param var1 * @return * @throws Exception */ Handl...

redis中的hash、列表、集合操作

一、hash操作 数据结构:key:{k1:v1, k2:v2, k3:v3} 类似Python中的字典 如:info : {name: lina, age: 22, sex: F} hset key k1 v1 设置/创建(字典) hget key k1 获取key1 中 k1对应的值 批量设置获取 hmset key k2 v2 k3 v3 同时...

crypto-js遇到的坑

最近在做H5网站,用websocket跟后台交互时,需要对数据进行加密,于是选了crypto-js组件,GitHub上api也不少,写的也清晰,但实际使用上会遇到不少坑: 加密解密时,传入的密钥key,需要转换为特定数组,不能是字符串 加密时,传入的明文需转换为特定数组 解密时,密文数组还要做特别的封装后,才能正确解密 let aes_option =...

手把手教学在Springboot中搭建使用Guava cache,包教包会,不会我输一包辣条给你

 guava cache使用简介   概述   缓存是日常开发中经常应用到的一种技术手段,合理的利用缓存可以极大的改善应用程序的性能。   Guava官方对Cache的描述连接   缓存在各种各样的用例中非常有用。例如,当计算或检索值很昂贵时,您应该考虑使用缓存,并且不止一次需要它在某个输入上的值。   缓存ConcurrentMap要小,但不完全相同。最...

JsonObject判断一个json串中是否含有某个key值

最近在做接口的调试工作,遇到将接收的XML信息转换成JsonObject后,取出某些key不存在的时候出现错误,所以对此方法做一个总结,这里为了方便就以json串来做演示。 import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject; public s...