[英]No message body writer found for class : class java.util.HashMap
[英]Creating a class that is an extension of the java.util.HashMap class
因此,我試圖創建一個名為UniqueHashMap的HashMap類的擴展,該擴展具有HashMap類的所有屬性,但是不能重復使用鍵,而不能重復使用值。 如果重復一個值,則密鑰將被替換,例如:
Apple
-> Green
我嘗試put("Pear", "Green")
我們將沒有: Pear
-> Green
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class UniqueHashMap extends HashMap {
public UniqueHashMap() {
}
public UniqueHashMap(int arg0) {
super(arg0);
}
public UniqueHashMap(Map arg0) {
super(arg0);
}
public UniqueHashMap(int arg0, float arg1) {
super(arg0, arg1);
}
public V put(K k, V v){
Set entrySet = (Set) hash.entrySet(); //Store entry of HashMap in a set
Iterator entryIterator = entrySet.iterator(); //Create iterator for the set
if(hash.containsValue(v))
{
while(entryIterator.hasNext())
{
Map.Entry mapEntry = (Map.Entry) entryIterator.next();
String key = (String) mapEntry.getKey();
String value = (String) mapEntry.getValue();
System.out.println("Key is = " + key + " and Value is = " + value);
System.out.println();
if (value.equals(v))
{
hash.remove(key);
hash.put(v, value);
break;
}
}
System.out.println(hash);
}
}
如您所見,我具有超類的所有構造函數,但是它不會解析應從HashMap
類(K,V,Hash,Map)中插入的值。
我的擴展名做錯了嗎? 還是我缺少一些進口商品?
由於要反向執行唯一關系,因此UniqueHashMap
應該類似地委派給其父類。
public V put(K k, V v) {
// reverse the order you put, and what you're keying off of.
super.put(v, k);
}
如果要使用HashMap
的通用形式,則應通過以下方式進行繼承:
public class UniqueHashMap<K, V> extends HashMap<K, V> {
....
}
在另一個方向上創建一個HashMap,該鍵的鍵是第一個地圖值。 我認為這就是Apache Commons的BiMap所做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.