For-Each Loop,Map >>
问题描述:
如何更改我的代码中For-Each Loop的部分。它应该像这样工作For-Each Loop,Map <String,Map <String,List <String> >>
当我在窗口填写“标记”,然后点击确定(下一阿丽娜等),向下跌破应显示:
[A]
[l]
- Alina
[d]
- Adam
[M]
[a]
- Mark
公共类WordsList延伸的ArrayList {
@Override
public String toString() {
if (isEmpty()) {
return "[]";
}
return String.format("[%s]\n", stream().collect(Collectors.joining(",")));
}
}
测试类
private Map<String, Map<String, List<String>>> words = new HashMap<>();
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String key = ("" + jTextField1.getText().charAt(0)).toUpperCase();
Map<String, List<String>> firstLevel = words.get(key);
String value = jTextField1.getText();
if (firstLevel == null) {
firstLevel = new HashMap<>();
words.put(key, firstLevel);
}
List<String> secondLevel = firstLevel.get("" + jTextField1.getText().charAt(1));
if (secondLevel == null) {
secondLevel = new ArrayList<>();
firstLevel.put("" + jTextField1.getText().charAt(1), secondLevel);
}
secondLevel.add(value);
jTextArea1.setText("");
for (String keys : words.keySet()) {
jTextArea1.append("[" + keys + "]\n");
for (String keyss : firstLevel.keySet()) {
jTextArea1.append(" " + "[" + keyss + "]\n");
for (String keysss : secondLevel) {
jTextArea1.append(" " + "-" + keysss + "\n");
}
}
}
}
我在Java也非常初学者,这是我的第一篇文章
答
例如,当我把阿丽娜,[A]它的好和[1]和阿丽娜,然后我把马克,我overwrties [ l]到“a”,Alina到“Mark”。只有[A]会留下来,[M]
错就错在for循环:
for (String keys : words.keySet()) {
jTextArea1.append("[" + keys + "]\n");
for (String keyss : firstLevel.keySet()) { // <-- Here
jTextArea1.append(" " + "[" + keyss + "]\n");
for (String keysss : secondLevel) { // <-- Here
jTextArea1.append(" " + "-" + keysss + "\n");
}
}
}
而不是遍历firstLevel
和secondLevel
(您刚才定义的),你应该遍历在地图和列表的相应条目:
(我在这里使用Map.forEach
,因为它是一个小更简洁)
words.forEach((c1, map) -> {
jTextArea1.append("[" + c1 + "]");
map.forEach((c2, list) -> {
jTextArea1.append(" " + "[" + c2 + "]");
list.forEach(name -> jTextArea1.append(" " + "-" + name));
});
});
*“有人可以帮助我......”*你似乎在寻找导师,这不是要问的地方。如果这种印象是错误的,发布一个[mcve]并提出一个*特定*问题。 –
你为什么重写'ArrayList'的toString?这几乎是默认的实现。 –
此代码似乎按预期工作 –