13
A
回答
3
我已經在Map接口方法上進行了搜索,但沒有方法 接受一個條目並將其放入地圖中。因此我自己使用一點繼承和Java 8接口來實現它。
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Maps {
// Test method
public static void main(String[] args) {
Map.Entry<String, String> entry1 = newEntry("Key1", "Value1");
Map.Entry<String, String> entry2 = newEntry("Key2", "Value2");
System.out.println("HashMap");
MyMap<String, String> hashMap = new MyHashMap<>();
hashMap.put(entry1);
hashMap.put(entry2);
for (String key : hashMap.keySet()) {
System.out.println(key + " = " + hashMap.get(key));
}
System.out.println("\nTreeMap");
MyMap<String, String> treeMap = new MyTreeMap<>();
treeMap.put(entry1);
treeMap.put(entry2);
for (String key : treeMap.keySet()) {
System.out.println(key + " = " + treeMap.get(key));
}
}
/**
* Creates a new Entry object given a key-value pair.
* This is just a helper method for concisely creating a new Entry.
* @param key key of the entry
* @param value value of the entry
*
* @return the Entry object containing the given key-value pair
*/
private static <K,V> Map.Entry<K,V> newEntry(K key, V value) {
return new AbstractMap.SimpleEntry<>(key, value);
}
/**
* An enhanced Map interface.
*/
public static interface MyMap<K,V> extends Map<K,V> {
/**
* Puts a whole entry containing a key-value pair to the map.
* @param entry
*/
public default V put(Entry<K,V> entry) {
return put(entry.getKey(), entry.getValue());
}
}
/**
* An enhanced HashMap class.
*/
public static class MyHashMap<K,V> extends HashMap<K,V> implements MyMap<K,V> {}
/**
* An enhanced TreeMap class.
*/
public static class MyTreeMap<K,V> extends TreeMap<K,V> implements MyMap<K,V> {}
}
的MyMap
接口僅僅是通過添加一種以上的方法,所述public default V put(Entry<K,V> entry)
延伸Map
接口 的接口。 除了定義方法外,默認實現編碼爲 。這樣做,我們現在可以將此方法添加到實現接口的任何類中,只需定義一個實現接口並擴展我們選擇的地圖實現類的新類。所有 在一行!這在上面代碼的底部進行了演示,其中創建了兩個類,每個類都擴展了HashMap和TreeMap 實現。
相關問題
- 1. 未在地圖中輸入條目(<key,values>)
- 2. 如何對齊地圖條目
- 3. 如何過濾地圖/訪問條目
- 4. PyYAML,如何對齊地圖條目?
- 5. Python Tkinter - 如何使用entry.get()輸入來自條目的輸入
- 6. 如何在網頁中使用where子句時輸入條目?
- 7. 如何在.pgpass文件中輸入多個條目?
- 8. 如何在bootstrap中輸入進度條?
- 9. ng在地圖和過濾條目中重複使用條目
- 10. 如何使用輸入流重載將項目插入到地圖成員中?
- 11. 如何聲明地圖包含條目的地圖
- 12. 如何在ckeditor中輸入印地文
- 13. 如何從.NET中的Castle ActiveRecord中隨機輸入條目
- 14. 從Tkinter中的按鈕輸入框中輸入多個條目
- 15. 如何在Excel中將每個輸入框條目寫入第一行?
- 16. 如何在地圖api中自動輸入我的位置
- 17. 如何在Google地圖中自動填充行輸入
- 18. Python 3空條目輸入條件
- 19. 如何獲取條目的值並將其輸入到Ssol.txt中?
- 20. SQL:如何找到加入表中沒有條目的地方
- 21. 如何在列表視圖中輸入唯一項目
- 22. 如果不在當前輸入中刪除表格條目
- 23. 如何在反應項目中導入谷歌地圖
- 24. 如何在不同表中輸入條目後查找表中的下一個條目?
- 25. 使用Morphia更新Mongo中的嵌入式地圖條目
- 26. 如何在medpy.filter.IntensityRangeStandardization()中輸入3D圖像?
- 27. 如何根據輸入條件輸出
- 28. 如何根據輸入有條件地隱藏部分輸入表單?
- 29. 如何在地圖中插入結構?
- 30. 允許根據電子郵件地址輸入一個條目
是否有一個原因'map.put(entry.getKey(),entry.getValue())'不滿意? – ajb
因爲'map.put(entry.getKey(),entry.getValue())'是多餘的,可以簡化爲'map.put(entry)',它更加簡潔和可讀。在我的 意見中,'java.util'包的'Map'接口應該有'V put(條目條目)'方法。 –
pgmank
_什麼時候你需要這樣一種方法 - 用例是什麼?我認爲它不在API中,因爲[YAGNI](https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it)。 –