2014-04-12 3 views
1

Я пытаюсь добавить новый объект Entry к массиву объектов. Я не знаю, как я буду писать метод для этого. Также я хотел бы увеличить размер массива, когда к нему добавляются новые элементы.Добавление объекта в массив объектов

public class Entry { 

    private String surname, initial, extension; 

    public Entry() { } 

    public Entry(String surname, String initial, String extention) { 
     this.surname = surname; 
     this.initial = initial; 
     this.extension = extention; 
    } 
} 

Я хочу написать способ добавления элементов в массив здесь. Новый объект Entry в настоящее время жестко закодирован, но это, очевидно, будет изменено.

public class ArrayDirectory implements Directory { 

    Entry[] entries = new Entry[4]; 


    public void addEntry(Entry newEntry) { 
     newEntry = new Entry("isajas","ssds", "sasdas"); 

    } 
} 

Спасибо, что нашли время, чтобы прочитать мой вопрос!

+1

Рассматривали вы используя '' ArrayList вместо прокатки своего собственного динамического массива? –

ответ

1

Вот как вы делаете именно то, что вы спрашиваете:

public class ArrayDirectory implements Directory { 
    Entry[] entries = new Entry[1]; 

    public void addEntry(Entry newEntry) { 
     Entry[] temp = new Entry[entries.length + 1]; 
     for (int i = 0; i < entries.length; i++) { 
      temp[i] = entries[i]; 
     } 
     newEntry = new Entry("isajas","ssds", "sasdas"); 
     temp[temp.length - 1] = newEntry; 
     entries = temp; 
     } 
} 

Но, как предлагали многие, ArrayList (или даже Vector) будет лучшим выбором, чем пытаться изобретать велосипед здесь.

0

Вы можете сохранить переменную, которая сообщает вам количество записей, присутствующих в каталоге. Каждый раз, когда вы добавляете/удаляете запись, просто обновляйте эту переменную. Эффективно вы используете Stack.

public class ArrayDirectory implements Directory { 

    Entry[] entries = new Entry[4]; 
    private int numEntries = 0; 

    public void addEntry(Entry newEntry) { 
    if (numEntries == 4) { /* Display an error */ } 

    newEntry = new Entry("isajas","ssds", "sasdas"); 
    entries[numEntries] = newEntry; 
    numEntries++; 
    } 
} 

В качестве альтернативы вы можете встроить структуру данных ArrayList в java для добавления/удаления записей.

1

Используйте вместо этого java.util.ArrayList. Это «реализация resizable-array из списка « Список »и предоставляет простой в использовании API для добавления объектов, например. ArrayList<Type>().add(Object o). Взгляните на ссылку Javadoc выше, это очень удобно, и я использую ее много.

Это также экономит вам дополнительную работу присвоения временных массивов взад и вперед и создавать дополнительные объекты ...

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