java - 如何创建由 Map 支持的可变列表
问题描述
如果我有将值映射到键的方法,我
如何返回List<E>
支持的?Map<K, E>
Map
valueToKeyMapper
class Foo {
private Map<Integer, String> backedMap = new HashMap<Integer, String>();
public List<String> getList() {
// NEED TO RETURN LIST BACKED BY MAP
}
public String getById(Integer id) {
return backedMap.get(id);
}
private static Integer valueToKeyMapper(String value) {
// just as exampl. In reality value will be POJO with method like getId()
return value.hashCode();
}
}
代码应该像这样工作(简单示例):
Foo foo = new Foo();
foo.getList().add("something");
String value = foo.getById("something".hashCode());
// I should see something
笔记:
List
应该是可变的,并且更改必须在底层传播Map
- 我无法修改 object 的公共方法
Foo
,因为它已在其他项目中使用 - 我不在乎订单
List
- 该
getById
方法应继续快速工作
解决方案
尝试这样的事情:---
List<String> list = new ArrayList<>();
Set keys = backedMap.keySet();
for (Iterator i = keys.iterator(); i.hasNext(); ) {
Integer key = (Integer) i.next();
String value = (String) backedMap.get(key);
list.add(value);
}
//To print Values in ArrayList :--
for(String s : list) {
System.out.println("printing element -- " + s);
}
推荐阅读
- r - 如何更好地分析“通话”的内容?
- php - 删除 mailchimp 活动 - 找不到资源
- sql-server - 如何在 2 个带有 GROUP 的 SELECT 语句之间创建 JOIN?
- r - 生成随机名字
- javascript - 使用 AWS S3 存储桶的授权错误
- react-native - React-native / redux - 如何通过导航重新初始化屏幕?
- c++ - 将对象作为异常抛出的问题:保持父异常类的相同构造函数
- excel - 我需要在 Excel 中使用公式将带有双引号 " 符号的列复制到另一个没有引号的列
- javascript - 在 React Mentions 中处理提交提及?
- telecommunication - 5G网络中NAS消息如何在N1/N2接口传输