gpt4 book ai didi

Java - 在对象列表和哈希表之间建立关系?

转载 作者:行者123 更新时间:2023-12-02 06:32:58 26 4
gpt4 key购买 nike

在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", secondary} 相关吗?因此,例如稍后如果我得到 list,我可以看到它与特定的哈希记录相关?

附注我尝试过这样的方法:

List<Hashtable<Object, Hashtable<String, Object>> list = new ArrayList<>();

但后来我发现,我在第一个哈希表中的键有时可能是相同的,我的意思是,例如可能存在这样的关系:

obj1 related with {"1st", first} 

然后

MyClass1 obj3 = new MyClass1();
obj3 related with {"2nd", second}

那么我将为另一条记录拥有相同的 key ,因此它会覆盖旧的记录(而且我还覆盖了 equalshashCode 方法,以便能够使用对象作为键,但这会带来问题,因为这个原因我不能将它用作键,因为这些键将被视为相同)。

更新:

为了说得更清楚。例如,我创建了两个相同的对象(相对而言)。

MyClass1 obj1 = new MyClass1("name");
MyClass1 obj2 = new MyClass1("name");

现在我需要一个对象与一个哈希表记录相关,另一个对象与另一条哈希表记录相关。因此,如果我使用“obj1 显示与您有关系的哈希表记录”,它将返回与之相关的哈希表记录(如上所示)。我在使用映射关联这些对象时遇到问题,因为这些对象具有相同的参数(因此在哈希表中,这些键将被视为相同的键并会覆盖另一个?)。

我想我可以做这样的事情:

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);

这个有点工作,但它看起来不太好,因为我需要将列表中的第一个值视为特殊值,因为它是一种对象,其余的是哈希表。

最佳答案

来自 LinkedHashMap 的文档:

Hash table and linked list implementation of the Map interface, with predictable iteration order.

因此,如果您创建一个新的Map,如下所示:

Map<String, Object> myMap = new LinkedHashMap<>();

您应该能够按如下顺序检索 key :

Object[] keys = myMap.keySet().toArray();
Object firstItem = myMap.get(keys[0]);

具体例子:

public static void main(String[] args) {
Map<String, Object> myMap = new LinkedHashMap<>();
myMap.put("1", "item 1");
myMap.put("3", "item 2");
myMap.put("4", "item 3");
myMap.put("2", "item 4");

Object[] keys = myMap.keySet().toArray();

for(Object key : keys){
System.out.println("Key: " + key + "; Value: " + myMap.get(key));
}
}

输出:

Key: 1; Value: item 1
Key: 3; Value: item 2
Key: 4; Value: item 3
Key: 2; Value: item 4

关于Java - 在对象列表和哈希表之间建立关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19911470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com