如何在数组中存储对象以便以后使用?

时间:2013-10-09 02:38:27

标签: java arrays

我很好奇如何在数组中存储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]之类的东西; ..但没有什么工作,我的知识是基本的。

3 个答案:

答案 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共享相同的引用,因此更改asongs[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作为数据模型对象)。这也会照顾你的持久性。