支持我有一個數據模型,看起來像這樣的地圖:如何生成一個列表
class CustomField {
String key;
String value;
}
從一個API,我可以得到的List<CustomField>
實例。密鑰在列表中是唯一的,這意味着這個集合應該是Map<String, String>
。在這個列表上操作是一件很痛苦的事情,因爲每個操作都需要迭代來檢查現有密鑰(CustomField不會實現等於)
如何創建一個支持此列表的Map<String, String>
「視圖」,以便我可以操作使用地圖界面?
我想要一個通用的方法,如:<T, K, V> Map<K, V> createMapBackedByList(List<T> list, BiFunction<K, V, T> elementMapper, Function<T, K> keyMapper, Function<T, V> valueMapper)
或類似的。
它將使用函數來映射列表元素和映射鍵和值之間的映射。
這裏最重要的是,我想更改地圖的基礎列表中得到體現,這就是爲什麼流API不在這裏工作了......
編輯:我不能修改API或CustomField類。
爲什麼你不只是製造了一個'地圖'從'名單',把它放回了'List'大功告成後?你真的需要直接改變底層結構嗎? –
Jack
也許你可以通過'map.values()'得到地圖的值列表。 – Colliot
您可以編寫一個新的'Map'實現,可能會擴展['AbstractMap'](https://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html)。 – khelwood