50 java collections dictionary hashmap
我正在创建一个计算器..我把我的按钮放在HashMap集合上,当我想将它们添加到扩展Jpanel的类时,我不知道如何从我的集合中获取按钮.所以我在网上发现了我的代码的最后两行,但我不知道它们的含义.
这是我的代码:
import java.awt.Component;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.swing.JButton;
import javax.swing.JPanel;
public class PanneauCalcul extends JPanel {
private HashMap<String, JButton> listbouton = new HashMap<String, JButton>() ;
public PanneauCalcul() {
for(int i = 0; i < 10; i ++) {
listbouton.put("num" + i, new JButton("" + i)) ;
}
listbouton.put("add", new JButton("+")) ;
listbouton.put("soustract", new JButton("-")) ;
listbouton.put("multiply", new JButton("x")) ;
listbouton.put("divise", new JButton("/")) ;
listbouton.put("equal", new JButton("=")) ;
Set entrys = listbouton.entrySet() ;
Iterator iter = entrys.iterator() ;
while(iter.hasNext()) {
Map.Entry me = (Map.Entry)iter.next(); //don't understand
this.add((Component) me.getValue()) ; //don't understand
}
EcouteCalcul ecout = new EcouteCalcul(this) ;
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白我们如何使用HashMap- 这是一个接口 - 没有重新定义JPanel的功能.
Pau*_*aul 103
Map.Entry是一个关键,它的价值合二为一.这允许您迭代Map.entrySet()而不必迭代Map.keySet(),然后获取每个键的值.写出你所拥有的更好的方法是:
for (Map.Entry<String, JButton> entry : listbouton.entrySet())
{
String key = entry.getKey();
JButton value = entry.getValue();
this.add(value);
}
Run Code Online (Sandbox Code Playgroud)
如果不清楚,请告诉我,我会修改我的答案.
请注意,您还可以使用 Map.Entry 作为主要类型,使用其基本实现 AbstractMap.SimpleEntry 创建自己的结构。例如,如果你想要一个有序的条目列表,你可以写:
List<Map.Entry<String, Integer>> entries = new ArrayList<>();
entries.add(new AbstractMap.SimpleEntry<String, Integer>(myStringValue, myIntValue));
Run Code Online (Sandbox Code Playgroud)
等等。从那里,你有一个元组列表。当您想要有序元组并且基本 Map 是不可行的时非常有用。