java – 在调用LinkedHashMap的put()方法之后,如何在’之前’和’之后’变量更新?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在调用LinkedHashMap的put()方法之后,如何在’之前’和’之后’变量更新?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1411字,纯文字阅读大概需要3分钟。
内容图文
![java – 在调用LinkedHashMap的put()方法之后,如何在’之前’和’之后’变量更新?](/upload/InfoBanner/zyjiaocheng/735/a657471318f440f3bda993d500805557.jpg)
LinkedHashMap扩展了HashMap. LinkedHashMap.java代码中不存在方法put().所以我认为如果我可以在下面的程序中调用put()方法,那么它必须从HashMap继承put()方法.
import java.util.*;
class First
{
public static void main(String[] args)
{
LinkedHashMap<Key, String> h=new LinkedHashMap<>(7);
h.put(new Key(3), "Hi");
h.put(new Key(1), "Hello");
h.put(new Key(9), "hru");
System.out.println(h);
}
}
Key.java是:
class Key
{
int i = 0;
Key(int i)
{
this.i=i;
}
public int hashCode()
{
return i;
}
public String toString()
{
return i+"";
}
}
它必须保持’after’和’before’引用以保留插入顺序:http://a.disquscdn.com/uploads/mediaembed/images/3751/7481/original.jpg
但是HashMap中的put()方法并不知道这些变量.那么如何调用put()来维护这些变量呢?
我也找不到HashMap或LinkedHashMap代码中的createEntry()方法.
我在用:
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
解决方法:
HashMap操作调用(间接)调用回调方法,例如LinkedHashMap覆盖的put和remove:
// Callbacks to allow LinkedHashMap post-actions
void afterNodeAccess(Node<K,V> p) { }
void afterNodeInsertion(boolean evict) { }
void afterNodeRemoval(Node<K,V> p) { }
这允许LinkedHashMap维护一个双向链接的条目列表,HashMap对此一无所知.
除了这些方法之外,LinkedHashMap会覆盖newNode()以返回LinkedHashMap.Entry的实例,该实例包含引用之前和之后.
编辑:
看到您的Keys类,您似乎忘记了覆盖equals,这意味着您可以向LinkedHashMap添加重复的键.
内容总结
以上是互联网集市为您收集整理的java – 在调用LinkedHashMap的put()方法之后,如何在’之前’和’之后’变量更新?全部内容,希望文章能够帮你解决java – 在调用LinkedHashMap的put()方法之后,如何在’之前’和’之后’变量更新?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。