GraphLayer
HashMap<String, GraphLayer>
。 Graphlayer对象具有两个类型的自定义成员。
PaperMetaData
由一些原始类型的成员和
ConferenceSerieAndInstance
的成员组成。作者仅包含原始的字符串成员以及隶属关系。
PaperMetaData
还包含普通的字符串成员和类型
String
的成员,其中类会议上只有Conatins字符串成员。 我希望,到目前为止,一切都清楚了。我从每个数据库中读取了我的信息,然后将其存储在数据库中的每个hashmap中。之后,我将列表中的每个地图转换。到目前为止还不错,但是列表中对象的顺序是不同的(以及在我转换地图之前的地图中)。从hashmap到arraylist的演员表看起来像这样。
HashMap<Author, Set<Affiliation>>
但两个列表都包含相同的对象。如果我调用每个列表的方法
ConferenceSerieAndInstance
,我会得到不同的哈希代码。我不明白为什么要获得不同的哈希码。根据Java文档,将像这样创建列表的哈希码。
HashMap<String, ConferenceInstance>
因此,列表中项目的顺序不应发挥作用。如果我使用带有原始数据类型的列表(例如字符串)尝试它,则它将起作用,但与我的自定义数据类型无效。没有人知道为什么它不起作用?
I还将列表中的
public List<GraphLayer> searchAuthor() {
...
return (List<GraphLayer>) new ArrayList<GraphLayer>(graph.values());
}
和
hashCode()
的成员的每个哈希码与列表2中的成员的哈希码进行了比较。而且没有区别。但是,如果我比较完整列表的哈希码,则存在差异。我不知道为什么。我无助
也许有人可以帮助我。最好的问候,预先感谢。您的回答在这里躺在这里
到目前为止很好,但是列表中对象的顺序是不同的 (以及在我转换地图之前的地图中)。
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
[...]如果两个列表在 相同的顺序
@samikuhmonen
的dedit