我有这种方法必须以这种方式插入ArrayList
元素:
0 Low 10
0 High 11
0 High 3
1 Low 54
为此,我对一行中的最后两个元素使用HashMap
,然后将此HashMap
放在ArrayList
中。这是代码:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
HashMap<String, String> map = new HashMap<>();
List<HashMap<String, String>> data = new ArrayList<>();
String label[];
JCheckBox casella=new JCheckBox();
//System.out.println(data.get(0).get("name"));
if(jList2.getModel().getSize()>0){ //Se sono state selezionate PAD
for(int i=0; i<jPanel2.getComponentCount(); i++){ //Controlla se le PAD hanno i prode
label=(casella.getText()).split(" ");
if( (casella=(JCheckBox) jPanel2.getComponent(i)).isSelected() ){ //Si
map.put(label[2], label[4]);
data.add(1,map);
}
else{ //No
map.put(label[2], label[4]);
data.add(0,map);
}
}
System.out.println(data.size());
问题在于map.put(label[2], label[4]);
行上有这条消息:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
我无法理解我错在哪里。
答案 0 :(得分:3)
如果由
产生的String数组label=(casella.getText()).split(" ");
没有足够的元素(小于2分别),你得到这个例外。
在使用它之前,你应该知道这个数组有多长。
答案 1 :(得分:1)
线程中的异常&#34; AWT-EventQueue-0&#34; java.lang.ArrayIndexOutOfBoundsException:2
意味着您Array
中没有足够的元素来提取它。
在Java
中,Array
索引从0
开始,因此代码可能会起作用,也可以提取map.put(label[1], label[3]);
,因为它们在两者中都很常见if and else
条件:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
HashMap<String, String> map = new HashMap<>();
List<HashMap<String, String>> data = new ArrayList<>();
String label[];
JCheckBox casella=new JCheckBox();
//System.out.println(data.get(0).get("name"));
if(jList2.getModel().getSize()>0){ //Se sono state selezionate PAD
for(int i=0; i<jPanel2.getComponentCount(); i++){ //Controlla se le PAD hanno i prode
label=(casella.getText()).split(" ");
map.put(label[1], label[3]);
if( (casella=(JCheckBox) jPanel2.getComponent(i)).isSelected() ){ //Si
data.add(1,map);
}
else{ //No
data.add(0,map);
}
}
System.out.println(data.size());
}}