Ich versuche, ein Element zu einer LinkedHashMap hinzuzufügen. Jeder Eintrag in der LHM ist ein Schlüssel und eine Klasse namens Page.Muss ich eine Instanz von Long erstellen, um ein Long als Parameter zu senden?
Ich schrieb diesen Code:
public void addPage(Page<byte[]> addPage)
{
if(numOfPages < initialCapacity) // Checks that there is room
{
pages.put(new java.lang.Long(addPage.hashCode()), addPage);
numOfPages++;
}
}
Es scheint, keine Fehler zu arbeiten und nicht geben.
Aber ich verstehe nicht, warum:
public void addPage(Page<byte[]> addPage)
{
if(numOfPages < initialCapacity) // Checks that there is room
{
pages.put(java.lang.Long(addPage.hashCode()), addPage);
numOfPages++;
}
}
funktioniert nicht. Warum muss ich eigentlich eine neue Instanz von Long
erstellen, statt einfach den von hashCode zurückgegebenen int in Long zu konvertieren? Scheint sehr verschwenderisch.
Bearbeiten - die Klasse Seite:
public class Page<T>
{
private T content;
private java.lang.Long pageId;
public Page(java.lang.Long pageId, T content)
{
this.pageId = pageId;
this.content = content;
}
public java.lang.Long getPageId()
{
return pageId;
}
public void setPageId(java.lang.Long pageId)
{
this.pageId = pageId;
}
public T getContent()
{
return content;
}
public void setContent(T content)
{
this.content = content;
}
public boolean equals(Page<T> page)
{
if(this.pageId == page.getPageId())
return true;
return false;
}
}
'pages.put (java.lang.Long (addPage.hashCode()), addPage);' ist syntaktisch falsch. Ist das nur ein Fehler beim Kopieren und Einfügen, wenn Sie den Post hier erstellt haben oder haben Sie ihn tatsächlich mit dieser Zeile versucht? – dunni
hashCode() ist normalerweise ein "int" -Wert und es ist nicht garantiert, dass es eindeutig ist, Sie erhalten Duplikate. Es ist nicht so verschwenderisch, wenn Sie den Code eines Map-Eintrags oder die Größe des von Ihnen verwendeten Werts vergleichen. Es ist unwahrscheinlich, dass es einen großen Unterschied macht. Ein weiteres Problem besteht darin, dass sich Ihr hashCode() mit hoher Wahrscheinlichkeit bei etwa 60.000 Einträgen wiederholt, lange bevor Sie sich Gedanken über verschwendeten Speicher machen müssen. –
Ich sehe. Das ist in der Tat ein großes Problem. Gibt es einen besseren Weg, um dann zu hacken? –