java数组的arraylists

时间:2011-08-21 14:27:32

标签: java arrays arraylist

我的程序中有四列按钮。分配新按钮时,按钮在列之间移动。而不是声明4个单独的arraylists来存储按钮,有没有办法创建1个arraylists数组,所以我可以简单地通过数组itterate?

我试过了List<JButton>[] lists = new ArrayList<JButton>[5];

但这不起作用。我错过了什么?

编辑:

for(int i = 0; i < 5; i++){
            if(choiceList.getSelectedIndex() == i){
                if(btnPersons[nameList.getSelectedIndex()].getX() == column[i]){
                    JOptionPane.showMessageDialog(null, "Error - Name already present in the column.","", 1);
                }else{
                    for(int j = 0; j < 5; j++){
                        if(lists[j].get(i) != null){
                            lists[j].remove(btnPersons[nameList.getSelectedIndex()]);
                        }
                    }
                    lists[i].add(btnPersons[nameList.getSelectedIndex()]);
                    lists[i].get(i).setBounds(column[i], ROWS[i], 125, 20);
                    //reloadLocations();
                }
            }
        }

这是我的代码。一旦选择了新列,它会检查按钮所在的列表并将其删除,然后将其添加到新列表中。但我的新问题是使用列表[i]将不再有效。 Idk如何使用此声明正确遍历我的arraylists列表:

List<ArrayList<JButton>> lists = new ArrayList<ArrayList<JButton>>(); 

5 个答案:

答案 0 :(得分:5)

您必须保留JButton对象列表的列表:

List<List<JButton>> lists = new ArrayList<List<JButton>>();
// populate (replace with your code)
lists.add(Arrays.asList(new JButton("list 1, button 1"), new JButton("list 1, button 2")));
lists.add(Arrays.asList(new JButton("list 2, button 3"), new JButton("list 2, button 4")));
lists.add(Arrays.asList(new JButton("list 3, button 5"), new JButton("list 3, button 6")));
lists.add(Arrays.asList(new JButton("list 4, button 7"), new JButton("list 4, button 8")));

// iterate
for(List<JButton> subList : lists) {
    for(JButton button : subList) {
        System.out.println(button.getText());
    }
}

答案 1 :(得分:4)

举一个关于什么对我有用/上面谈过的例子。

    List []oArrayOfArrayList = new ArrayList[2];

    List<String> oStringList = new ArrayList<String>();
    List<Integer> oIntegerList = new ArrayList<Integer>();

    oArrayOfArrayList[0] = oStringList ;
    oArrayOfArrayList[1] = oIntegerList ;

答案 2 :(得分:3)

您无法使用通用参数从类创建数组。

您要么想要列出清单,要么放弃通用参数。

答案 3 :(得分:2)

您无法为通用对象调用new运算符,因为在运行时该类型已被删除。

答案 4 :(得分:0)

为您的ArrayList创建一个类:

    private class xxx extends ArrayList<JButton> {
        // need serial to keep IDE happy
        private static final long serialVersionUID = -2392107594926751233L;
    };

    private xxx[] lists = new xxx[5];