微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

哈希集中的新条目

如何解决哈希集中的新条目

| 有没有办法知道最近添加到哈希集中的新条目是什么?在我的程序中,第一个循环添加了[emmy,Carl],而在我的第二个循环中添加了[emmy,Dan,Carl],无论如何我可以只使用dan而不能在第三个循环中使用其余的吗?     

解决方法

        “ 0”不包含有关添加元素顺序的信息。您需要将其替换为具有此功能的集合(例如
ArrayList
)。     ,        java.util.HashSet不会保留顺序,但是java.util.LinkedHashSet会保留顺序。可以改用吗?从Javadoc:   此实现与HashSet的不同之处在于,它维护在其所有条目中运行的双向链接列表。此链表定义了迭代顺序,即元素插入到集合中的顺序(插入顺序)。请注意,如果将元素重新插入到集合中,则插入顺序不会受到影响。     ,        哈希表由哈希表支持,并且无法保证检索顺序。检索顺序将与插入顺序不同。因此,不,不可能知道最后添加的项目。 解决方法-可以使用两个哈希集,将旧与新哈希进行比较并获取新条目,或者使用某种指标来区分所添加的垂直迭代,或者使用ArrayList或适合您设计的任何方法。     ,        
HashSet<String> oldpeople = new HashSet<String>();P
HashSet<String> newPeople;
for (Set<String> cycle : input)
{ 
    newPeople = new HashSet<String>();
    newPeople.addAll(cycle);
    newPeople.removeAll(oldPeople);
    oldPeople.addAll(cycle);
}
现在您有了newPeople中始终包含的最后一个新对象。     ,        好吧,如果我正确理解了您的帖子和评论(那很难,请尝试更加精确:))您真正想要的是:a)不在HashSet中多次添加任何项目,并且b)看看是否尝试添加时,该集合已经包含给定的项目。 a)对于每个集合都是真,对于b)可以只使用add的返回值:如果返回false,则该集合中已包含该值。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。