Заполнение массива объектами
Мне нужна помощь с вопросом о домашнем задании, над которым я работаю.
Мне нужно создать класс "Библиотека", который содержит массив объектов Song (вместимость 10).
Затем сделайте метод addSong.
Вот что я до сих пор:
public class Library{
Song[] arr = new Song[10];
public void addSong(Song s){
for(int i=0; i<10; i++)
arr[i] = s;
}
}
Мой вопрос: есть ли другой способ заполнить массив? позже мне нужно будет искать песню на основе значения индекса. Поэтому я создам такой метод, как:
общественная песня getSong (int idx)
Благодарим вас в ожидании ваших ответов!
Ответы
Ответ 1
Если вам действительно нужно использовать массив (а не ArrayList или LinkedList), это решение может быть для вас правильным:
public class Library{
private Song[] arr = new Song[10];
private int songNumber = 0; //the number of Songs already stored in your array
public void addSong(Song s){
arr[songNumber++] = s;
}
}
Если вы хотите избежать выполнения, если вы добавите более 10 песен:
public void addSong(Song s){
if(songNumber<10)
{
arr[songNumber++] = s;
}else{
//what to do if more then 10 songs are added
}
}
Ответ 2
Существует несколько способов выполнить это.
Логика, которую вы используете, более или менее нормально.
Но что вы здесь делаете:
public void addSong(Song s){
for(int i=0; i<10; i++)
arr[i] = s;
}
Заполняет весь массив Songs той же песней, возможно, это было бы лучше:
public void addSong(Song s, int index){
arr[index] = s;
}
Конечно, если вы передадите отрицательный индекс или индекс больше 9, у вас будут проблемы.
Ответ 3
Используйте ArrayList вместо массива. Таким образом, вы можете использовать функцию ArrayList.add()
для добавления в конец вашего массива и функцию ArrayList.get(int index)
, чтобы получить запись массива в индексе index
.
public class Library{
ArrayList<Song> arr = new ArrayList<Song>();
public void addSong(Song s){
arr.add(s);
}
public Song getSong(int index){
return arr.get(index);
}
}
Ответ 4
Чтобы расширить ответ Vacation9s:
ArrayList<Song> songArray = new ArrayList<Song>();
public void addSong(Song s){
songArray.add(s);
}