根据价值获得地图密钥是一种好习惯吗? e.g:
class MyClass {
private String key;
private Object value;
}
然后:
Map<String, MyClass> map = new LinkedHashMap<String, MyClass>();
MyClass a = new MyClass("key1", valueObject);
map.put(a.getKey(), a);
可以吗?我被迫有这样的类作为值,我考虑使用Set
,但我需要根据index
(通过keySet索引进行设置)和key
获取项目(其中values key = =地图键)。我还需要固定的尺寸,可以从这个系列中删除最旧的元素。
我认为我应该确保我的键和值键字段始终相同。我怎样才能实现它?
答案 0 :(得分:3)
在值实体中使用键完全没问题,这就是每个数据库创建索引的方式。一个好的做法是让MyClass
成为不可变的,并将整个事物包装在一个隐藏细节的新集合类中,并防止将值插入到错误的键中。这是确保key == value.key
答案 1 :(得分:0)
您的地图存储冗余数据(双键)。 您可以将MyClass.key作为地图的关键字,将MyClass.value作为地图的值放入地图中。
答案 2 :(得分:0)
正如您所看到的,here地图将一个键映射到其值。
因此,只要您不需要密钥进行MyClass
内的进一步操作,您的尝试就会有点多余。