是否可以在 java 中建立对象列表和哈希表之间的关系。
例如我有这个代码:
//For list
MyClass1 obj1 = new MyClass1();
MyClass2 obj2 = new MyClass2();
List<Object> list = new ArrayList<>();
list.add(obj1);
list.add(obj2);
//For Hashtable
int first = 10;
String second = "something";
Hashtable<String, Object> hash = new ArrayList<>();
hash.put("1st", first);
hash.put("2nd", second);
现在如何建立这样的关系:
list.get(0)
将与哈希记录 =>{"1st", first}
和
list.get(1)
会与哈希记录 => 相关{"2nd", second}
吗?因此,例如稍后如果我得到list
,我可以看到它与特定的哈希记录有关?
PS我试过这样的方法:
List<Hashtable<Object, Hashtable<String, Object>> list = new ArrayList<>();
但后来我想,我在第一个 Hashtable 中的键有时可能是相同的,我的意思是例如可能存在这样的关系:
obj1 related with {"1st", first}
接着
MyClass1 obj3 = new MyClass1();
obj3 related with {"2nd", second}
因此,我将对另一条记录使用相同的键,因此它会覆盖旧的键(并且我已经覆盖了equals
和hashCode
方法,以便能够将对象用作键,但是由于这个原因我不能将其用作键,因为这些键将被视为相同)。
更新:
为了更清楚。例如,我创建了两个相同的对象(相对而言)。
MyClass1 obj1 = new MyClass1("name");
MyClass1 obj2 = new MyClass1("name");
现在我需要一个对象与一个 Hashtable 记录相关联,另一个对象与另一个 Hashtable 记录相关联。因此,如果我使用“obj1 向我显示与您有关系的 Hashtable 记录”,它将返回与之相关的 Hashtable 记录(如上所示)。而且我在使用映射关联这些对象时遇到问题,因为这些对象具有相同的参数(因此在 Hashtable 中,这些键将被视为相同的键并会覆盖另一个键?)。
我想我可以做这样的事情:
List<List<Object>> final_list = new ArrayList<>();
List<Object> row = new ArrayList<>();
Hashtable<String, Object> myHash = new Hashtable<String, Object>
那么:
myHash.add("1", "something");
myHash.add("2", 10);
row.add(obj1);
row.add(myHash);
final_lit.add(row);
这有点工作,但它看起来并不好,因为我需要将列表中的第一个值视为特殊,因为它是一种对象,其余的是哈希表。