2009-12-16 3 views
0

Мой вопрос о том, как добавить объект в массив, в моем случае у меня есть класс массива с 4 столбцами, и я не могу заставить свою программу добавлять объект в массив.Проблема с добавлением объекта в ArrayList

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"); 

но моя программа не побежит .. Любой, как знает, как это сделать?

+2

Вы можете показать нам код для DatabaseTable.add? –

+3

«Не сработает» - как? – Joel

+0

Программа переходит в режим отладки при запуске программы – Stefan

ответ

0

Добавив, вы имеете в виду присвоить значение элементу массива?

yourArray[0] = yourObject1; 
yourArray[1] = yourObject2; 
//... 
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); 
0

Является DatabaseTable некоторого класса вы разработали для реализации поведения массива? Если это так, вам нужно отладить реализацию add(). Без контекста мы не можем больше помочь.

Если вы используете массив самостоятельно из-за домашнего задания, сначала вы должны знать о существовании и поведении структуры массива, предоставляемой языком. Почему ваша программа не запускается? Это исключение?

Проверьте, как массивы покрыты The Java Tutorial. Необходимо также проверить структуру Collections.

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 полезно: Trial: Collections и Language basics: Arrays.

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; 
} 
3

Похоже, вы передаете 4 аргумента для функции 3 аргумента.

0

В вашем коде pastebay DatabaseTable.add() имеет три аргумента, а ваш код выше имеет четыре.

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; 

} 
Смежные вопросы