如何使用ArrayList

时间:2017-04-04 12:26:45

标签: java arraylist vector

使用ArrayList比使用Vector更好吗? 我尝试将所有Vector值的代码更改为ArrayList,但是在myTableModel方法结束时的return语句中出现错误

编辑:为了澄清我已经听过并读过一些人提到2017年使用矢量很差(并且首选ArrayList)。对于java来说还是一个新手,所以我的想法显然不应该在哪里(正如其他用户明确指出的那样):)

public static DefaultTableModel myTableModel(){
        csvData = new Vector();
    readInData();
    String header = csvData.get(0);
    String[] columns = header.split("[,]");
    Vector<String> colNames = new Vector<>();
    int columnCount = columns.length;
    for (int column = 0; column < columnCount; column++) {
        colNames.add(columns[column]);
    }
    Vector<Vector<Object>> data = new Vector<>();


    for(int j = 1 ; j < csvData.size() ; j++){
        String row = csvData.get(j);
        String[] elements = row.split("[,]");
            Vector<Object> vector = new Vector<>();
        for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) {
            vector.add(elements[columnIndex]);
        }
        data.add(vector);
    }

    return new DefaultTableModel(data, colNames);

2 个答案:

答案 0 :(得分:1)

简单!

public static DefaultTableModel myTableModel() {
    String[] csv = readInData();
    String[] columnNames = csv[0].split(",");
    Object[][] data = new Object[csv.length - 1][];

    for (int row = 1; row < data.length; row++)
        data[row] = csv[row].split(",");

    return new DefaultTableModel(data, columnNames);
}

答案 1 :(得分:0)

你弄错了:你没有选择这个或那个课,因为你听到有人说这个或那个。您决定选择某个类,因为它使有意义。因为它可以帮助你完成工作。

示例:当您转向DefaultTableModel的javadoc时,您会发现:该类提供了一个接受ArrayList的构造函数!因此:无需更改代码;当您的代码的目标是创建这样的DefaultTableModel对象时!

所以,正如另一个答案所指出的那样:有时答案是不要使用&#34;更多&#34;特征;但要密切关注你的问题;甚至用固定大小的数组替换动态矢量。因为他们做的工作!

但是退后一步;和一般说话:然后是的,使用ArrayList而不是Vector有许多优点;并在2017年;当你写新代码;你的&#34;默认&#34;将使用List / ArrayList而不是Vector。