【发布时间】:2020-07-27 07:27:25
【问题描述】:
在下面的代码中 contains_All hashmap 为每次迭代放置键和值。 在 for 循环之后,我再次单击下一个按钮,将名称和状态放入 hashmap 所以我的 hashmap 应该包含每个页面的所有值。 但是当我打印哈希图时 我得到了 4 个列表
- 1 页的键和值。
- 2页的键值和1页 3.第3页的键值与1和2一起
- 4个页面的键值以及之前的全部
现在,当我迭代地图时,我得到了太多的值,因为它正在打印 1、2、3 和 4 但我只想要包含所有内容的 4 个
public static validate()
{
get value();
while (utils.isElementDisplayed(next)) {
utils.waitForElement(next, 20);
utils.click(next);
getValue();
}
public getValue{
for (int i = 0; i < allRows.size(); i++) {
names = ds_name.get(i).getText();
seName = ds_server.get(i).getText();
state = ds_state.get(i).getText();
String names_seName = name_ds.concat("_" + serverName_ds);
containsAll.put(names_seName, state);
}
System.out.println(containsAll);
Iterator it = containsAll.entrySet().iterator();
while (it.hasNext()) {
Map.Entry ent = (Map.Entry) it.next();
System.out.println("-----------------------------------------------------------");
System.out.println(ent.getKey() + "= " + ent.getValue());
Reporter.log("-----------------------------------------------------------");
Reporter.log(ent.getKey() + "= " + ent.getValue());
}
}
【问题讨论】:
-
首先想到的是,您一直在填充
containsAll哈希图,而从未从中删除任何内容。所以首先用第 1 页填充它,然后添加第 2 页,依此类推。当然,它将保留所有以前的值。解决方案:清除 hashmap 或每页新建一个。 -
@Fullslack.dev 我怎样才能删除这些东西并只获取包含所有值的最后一个。我不想为所有页面制作新的 Hahmaps
-
如果你只在
for loop中使用hashmap,我也会将声明移到那里。在 clearing 或 removing values 在 hashmap 中我会看看这个:stackoverflow.com/questions/2811537/… -
@Fullslack.dev 我清除了哈希图,但现在我只得到了 4 页的值但我想要所有页面的值一起
-
好的,我希望我现在能理解这个问题(双 3. 的表述很糟糕,并且对 4. 的引用不存在)。所以你想看到这个打印正确的
The key value of 4 pages along with previous all。为此,请返回您的原始代码(忘记我以前的 cmets)并将Iterator it = containsAll.entrySet().iterator();和后续代码块移出for loop。让我知道这是否有效。
标签: java collections hashmap