0

我很好奇如何将 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]; ..但没有任何工作,我的知识是基础的。

4

3 回答 3

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 trail 了解更多信息...

于 2013-10-09T02:45:26.773 回答
0

您可以使用 ArrayList 将对象存储在数组中。

ArrayList<Song> arraySong = new ArrayList<Song>();

这将创建一个 Song 对象的数组列表(但目前没有元素)

Song a = new Song();
a.title = "Freebird"
a.artist = "Lynyrd Skynryd"
arraySong.add(a);

现在 arraylist arraySong 有一个 Song 对象。您可以对其余的 Song 对象执行相同的操作。

于 2013-10-09T02:48:00.367 回答
0

除非您可以在编译时知道或导出元素的数量,否则不要使用数组。

专辑曲目的集合是一个集合,所以我会使用一个集合。因为专辑曲目和索引之间没有自然关联,所以我会使用 Set 而不是 ArrayList(但您也可以使用 ArrayList)。

如果您编写 Song 类以遵守 equals() 合同并具有可用的 hashcode() 函数(......也将 Song 类编写为不可变的),那么将数据表示为:

Set<Song> mySongs = new HashSet<>();

不过,比这更好的是创建一组规范化的数据表,并通过 JDBC 将这些数据放入数据库(以 Song 作为数据模型对象)。这也将为您解决持久性问题。

于 2013-10-09T02:59:41.290 回答