gpt4 book ai didi

Java ArrayList 帮助

转载 作者:行者123 更新时间:2023-12-02 06:10:03 25 4
gpt4 key购买 nike

假设我有一个名为 list1 的字符串数组列表,其中包含字符串“A”、“B”、“C”、“D”、“E”。然后我还有一个storageUnit类型的ArrayList,这是我写的一个类,叫做list2。请参阅下面的代码以获得更好的解释:

ArrayList<String> list1 = new ArrayList<String>();
ArrayList<storageUnit> list2 = new ArrayList<storageUnit>();

storageUnit newUnit = new storageUnit();
for (int i = 0; i < list1.size(); i++) {
newUnit.category = list1.get(i);
list2.add(newUnit);
}

static class storageUnit {
String category;
Hashtable<String, Integer> wordTable = new Hashtable<String, Integer>();
};

现在,如果我尝试打印 list2 中所有存储单元的所有类别,我会得到 [E, E, E, E, E] 而不是 [A, B, C, D, E]。谁能解释为什么会这样?

最佳答案

改变

storageUnit newUnit = new storageUnit();
for (int i = 0; i < list1.size(); i++) {
newUnit.category = list1.get(i);
list2.add(newUnit);
}

for (int i = 0; i < list1.size(); i++) {
storageUnit newUnit = new storageUnit();
newUnit.category = list1.get(i);
list2.add(newUnit);
}

您的代码所做的是创建一个对象 (newUnit) 并将其多次添加到列表中。每次,您都会覆盖它的类别,因此当您打印列表时,您会多次获得相同的值。

相反,您需要每次都创建一个新的 newUnit 对象。

关于Java ArrayList 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4159056/

25 4 0