我很好奇如何在数组中存储java对象。我很困惑,因为我的老师不了解自己,我们没有超过对象数组,只有数组和对象分开。
我的代码如下:
public class SongDriver
{
public static void main( String[] args )
{
Song a = new Song();
a.title = "Freebird";
a.artist = "Lynyrd Skynryd";
Song b = new Song();
b.title = "Sweet Home Alabama";
b.artist = "Lynyrd Skynryd";
Song c = new Song();
c.title = "Black or White";
c.artist = "Michael Jackson";
Song d = new Song();
d.title = "Smooth Criminal";
d.artist = "Michael Jackson";
}
}
这正是我的对象应该如何根据老师的说法。
我的另一个叫做歌的课是:
public class Song
{
String title;
String artist;
}
我正在尝试诸如String myPod = new Song [4]之类的东西; ..但没有什么工作,我的知识是基本的。
答案 0 :(得分:3)
数组是给定类型的已定义容器,例如......
{type}[] {variable};
因此,基于您尝试创建Song
数组的事实,您需要将数组定义为Song
的类型,例如......
Song[] songs;
当然,您也应该对其进行初始化,因此根据您的示例,您可以使用类似......
的内容Song[] songs = new Song[4];
songs[0] = new Song();
songs[0].title = "Freebird";
songs[0].artist = "Lynyrd Skynryd";
songs[1] = new Song();
songs[1].title = "Sweet Home Alabama";
songs[1].artist = "Lynyrd Skynryd";
songs[2] = new Song();
songs[2].title = "Black or White";
songs[2].artist = "Michael Jackson";
songs[3] = new Song();
songs[3].title = "Smooth Criminal";
songs[3].artist = "Michael Jackson";
请记住,数组是固定长度的容器。它最多只能包含您指定的元素数量。
您还可以为元素指定值,例如......
Song a = new Song();
a.title = "Freebird";
a.artist = "Lynyrd Skynryd";
songs[0] = a;
这与使用......
相同Song a = new Song();
songs[0] = a;
songs[0].title = "Freebird";
songs[0].artist = "Lynyrd Skynryd";
或
songs[0] = new Song();
songs[0].title = "Freebird";
songs[0].artist = "Lynyrd Skynryd";
0
元素与a
共享相同的引用,因此更改a
或songs[0]
的属性会影响同一个对象,直到任一引用更改为止。 ..
通过阅读Arrays小道......
,您可以了解更多信息答案 1 :(得分:0)
您可以使用ArrayList将对象存储在数组中。
ArrayList<Song> arraySong = new ArrayList<Song>();
这将创建一个Song对象的arraylist(但当前没有元素)
Song a = new Song();
a.title = "Freebird"
a.artist = "Lynyrd Skynryd"
arraySong.add(a);
现在arraylist arraySong有一个Song对象。你可以对其余的Song对象做同样的事情。
答案 2 :(得分:0)
除非你能在编译时知道或得出元素的数量,否则不要使用数组。
专辑曲目的集合是一个集合,所以我使用了一个集合。因为专辑曲目和索引之间没有自然关联,所以我会使用Set而不是ArrayList(但你也可以使用ArrayList)。
如果你编写了Song类以遵守equals()契约并且有一个可用的hashcode()函数(...也将你的Song类写成不可变的),那么将数据表示为:
Set<Song> mySongs = new HashSet<>();
但是,比这更好的是创建一组规范化的数据表,并通过JDBC将这些数据放入数据库(将Song作为数据模型对象)。这也会照顾你的持久性。