在编写判断求第一个节点算法时发现:
- //已知单链表中存在环,求进入环的第一个节点
- public Node getFirstNodeInCycleHashMap(Node head){
- HashMap<Node,Boolean> map=new HashMap<Node,Boolean>();
- while (head!=null){
- if(map.get(head)==true) {//
- return head;
- }
- else{
- map.put(head,true);
- head=head.next;
- }
- }
- return null;
- }
第五行会出现,空指针异常,因为在map中还没有key时就调用get()方法,产生空指针异常。
((HashMap.Node)map.entrySet().toArray()[4]).getKey()=Cannot find local variable 'map'
所以推荐使用containsKey(Object key)来判断是否存在指定的键,返回值为true.而且,get()方法还存在一个弊端是,当value值
为null时,返回为null时,可能表示不包含该键的映射关系;也可能是该键映射的value值为null。因此一般用containsKey(),
来判断。