Java:CD 库教程 - 哪种数据类型来存储 CD、艺术家和歌曲?

标签 java types arraylist

创建了以下类,暂时没有接口(interface)/抽象类:

  1. 测试 - 用于创建测试数据
  2. 音乐 - 应存储所有 CD
  3. CD - 应存储艺术家和 CD 标题 + 所有歌曲
  4. 艺术家 - 仅包含字符串名称
  5. 歌曲 - 包含默认构造函数(艺术家 anArtist、字符串歌曲标题、字符串持续时间)
  6. 持续时间 - 用于歌曲持续时间和后续计算

我尝试了 ArrayList,但当我添加另一张 CD 时它会被覆盖。我需要一种数据类型来存储数据并链接到另一个数组。例如:存储 CD1 的艺术家和标题,并链接到包含 CD1 中所有歌曲的另一个数组。

谢谢

来自测试类的代码:

Artist aArtist = new Artist("artist1");
        CD aCD = myMusic.addCD(aArtist, "CD1");
        aCD.addSong(aArtist, "song1", "1:00");

aArtist = new Artist("artist2");
        CD aCD = myMusic.addCD(aArtist, "CD2"); //Overwrites arraylist from CD1
        aCD.addSong(aArtist, "song2", "2:00");

我在音乐类和 CD 类中更改了我的 ArrayList...我认为有一种更简单的方法来解决该教程,但这里是代码:(输出所有保存的歌曲和 CD 标题)

音乐类:

    import java.util.ArrayList;

public class Music {
    private ArrayList<CD> myCDs = new ArrayList<CD>();

    public CD addCD(Artist anArtist, String cdTitle) {

        CD aCD = new CD(anArtist, cdTitle);
        myCDs.add(aCD);
        return aCD;
    }

    public void showData() {

        for (int i = 0; i < myCDs.size(); i++) {
            for (int j = 0; j < myCDs.get(i).getMyCD().size(); j++) {

                System.out.println(myCDs.get(i).getMyCD().get(j).getSong());
            }
        }

    }
}

等级CD:

  import java.util.ArrayList;

public class CD {
    private String cdTitle;
    private ArrayList<Song> myCD = new ArrayList<Song>();

    public CD(Artist aArtist, String cdTitle) {
        setMyCD(aArtist, cdTitle);
    }

    public ArrayList<Song> getMyCD() {
        return myCD;
    }

    public String getMyCDtitle() {
        return cdTitle;
    }

    public void setMyCD(Artist anArtist, String cdTitle) {
        this.cdTitle = anArtist.getName() + ": " + cdTitle;
    }

    public void addSong(Artist anArtist, String aTitle, String aDuration) {

        myCD.add(new Song(anArtist, aTitle, aDuration));

    }
}

类(class)歌曲:

 public class Song {
    private String song;

    public String getSong() {
        return song;
    }

    public void setSong(String song) {
        this.song = song;
    }

    public Song(Artist anArtist, String songtitle, String aDuration) {
        Duration songDuration = new Duration(aDuration);
        setSong(anArtist.getName() + ": " + songtitle + " ("
                + songDuration.getSongDuration() + ")");

    }

}

一般来说:您将如何解决这样的项目? 我会很感激每一个建议或 uml 图。

最佳答案

这可能是 aArtist = new Artist("artist2"); 的问题 CD aCD = myMusic.addCD(aArtist, "CD2");//覆盖CD1中的数组列表 aCD.addSong(aArtist, "song2", "2:00"); 您使用相同的 Artist 对象。如果您发布您的 addCD 方法实现,它将对我们更加开放。

关于Java:CD 库教程 - 哪种数据类型来存储 CD、艺术家和歌曲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240731/

相关文章:

Android - 通过其 ID 从 arraylist 中删除一个项目

java - 如何使用另一个ArrayList的对象创建一个ArrayList?

java - 从排列创建 ArrayList Java

mysql - 容纳单个小数的最小 mysql 类型

c++ - C++中未定义的结构类型

包含不确定性/误差线的Python数据类型?

java - Dropwizard Spring 数据库

Java 程序多次出现在系统托盘中

java - 如何在 Caffeine Cache Spring Boot 的 application.properties 层为每个缓存设置不同的规范

c# - 减少在程序中存储数据时的内存使用-VB.NET/C#