如何解决哈希集中的新条目
| 有没有办法知道最近添加到哈希集中的新条目是什么?在我的程序中,第一个循环添加了[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 举报,一经查实,本站将立刻删除。