0

我的问题是关于如何将对象添加到数组中,在我的情况下,我有一个包含 4 列的数组类,我无法让我的程序将对象添加到数组中。

public class DatabaseTable extends AbstractTableModel { 

    public ArrayList<Object> objects = new ArrayList<Object>(); 

    public void add(Object o, String sort, String getDesc) { 
        objects.add(o); 
    } 
    // ... 
}

我尝试过:

DatabaseTable dt = new DatabaseTable();
dt.add("something", "something", "something", "something");

但我的程序不会运行..任何人都知道怎么做?

4

8 回答 8

3

看起来您正在将 4 个参数传递给 3 个参数函数。

于 2009-12-16T11:42:11.550 回答
0

取决于它的支持。如果是例如java.util.ArrayList,那么您可以使用它的add()方法:

List<String> list = new ArrayList<String>();
list.add("something");
list.add("something");
list.add("something");
list.add("something");

如果你想在你的DatabaseTable#add()方法中使用可变参数,那么它应该看起来像:

public void add(String... strings) {
    list.addAll(Arrays.asList(strings));
}

或者更高效一点:

public void add(String... strings) {
    for (String string : strings) {
        list.add(strings);
    }
}

这样你就可以随心所欲地使用它:

dt.add("something", "something", "something", "something");

但如果它由一个普通String[]数组支持,那么你需要做更多的工作:

private String[] array = new String[0];

public void add(String... strings) {
    int length = array.length;
    String[] newArray = new String[length + strings.length];
    System.arraycopy(array, 0, newArray, 0, length);
    array = newArray;
    for (int i = 0; i < strings.length; i++) {
        array[length + i] = strings[i];
    }
}

有关集合(ArrayList属于)和数组的更多信息,您可能会发现 Sun 教程很有用:试用:集合语言基础:数组

于 2009-12-16T11:38:46.253 回答
0

你可以使用这样的东西:

public Object[] addObjectToArray(Object[] array, Object o)
{
    Object[] ret = new Object[array.length + 1];
    System.arraycopyt(array, 0, ret, 0, array.length);
    ret[array.length] = o;
    return ret;
}
于 2009-12-16T11:39:15.067 回答
0

通过添加,您的意思是为数组元素分配一个值吗?

yourArray[0] = yourObject1;
yourArray[1] = yourObject2;
//...
于 2009-12-16T11:27:41.790 回答
0

我不知道类 DatabaseTable。你试过 ArrayList 吗?就像是:

ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
ArrayList<String> tmp = new ArrayList<String>();
tmp.add("something");
tmp.add("foo");
tmp.add("bar");
tmp.add("wtf");
list.add(tmp);
于 2009-12-16T11:28:05.633 回答
0

DatabaseTable 是您为实现数组行为而开发的某个类吗?如果是这种情况,您需要调试 add() 实现。没有上下文,我们无能为力。

如果由于作业分配而自己实现数组,首先您必须了解语言提供的数组结构的存在和行为。为什么你的程序不运行?它抛出异常?

查看The Java Tutorial是如何介绍数组的。还应检查Collections框架。

于 2009-12-16T11:32:10.477 回答
0

在您的 pastebay 代码中,DatabaseTable.add() 有三个参数,而上面的代码有四个。

于 2009-12-16T11:50:29.893 回答
0

您可以通过创建特定长度的数组来创建对象数组,并且可以按位置将对象放在数组上。

public static Object [] addToArray(){
    List list1 = new ArrayList();
    list1.add("11111");

    List list2 = new ArrayList();
    list2.add("2222222222");

    List list3 = new ArrayList();
    list3.add("3333333333");

    List list4 = new ArrayList();
    list4.add("444444444");
    Object []arr = new Object[4];

    arr[0] = list1;
    arr[1] = list2;
    arr[2] = list3;
    arr[3] = list4;
    return arr;

}
于 2009-12-16T12:22:46.433 回答