【发布时间】:2017-03-12 10:14:32
【问题描述】:
问:我如何跟踪哪个ArrayList 元素属于JTable 中的哪个元素,以便以后我必须将它们全部放在一个ArrayList 中?
详细:
我有一个接口 Media,以及实现它的 3 个类:Book、Movie、Album。 Album 有一个 ArrayList 和 Songs(显然也是我制作的一个类)。
我像往常一样使用Object[][] 制作了JTable,我可以暂时输入Strings、ints 等,用户可以添加行、删除行、编辑单元格,然后后来我计划检查数据并制作JTable中指定的每个东西并将它们放入Media类型的名为ListOne的ArrayList中,这样我就可以使用ObjectOutputStream和保存List(是的,这是作业中的要求,我个人会保持简单)。
但问题是Songs 是Album 类中的ArrayList,所以我用JTable 制作了另一个JFrame,其中一个可以类似地填写那个,然后我想我会将用户提供的所有歌曲存储到一个临时的Album-object 中。但我从这里去哪里?如果用户在第一个JTable 中删除相应的Album,我将无法像这样跟踪它们。
如果我将这些 Albums 存储在一个名为 ListTwo 的 ArrayList 中,并且如果用户决定删除 ListOne 中的第 6 号和第 6 号恰好是Album,我现在必须知道要在 ListTwo 中删除哪个,并确保其他人的 ID 或密钥不会因此受到影响,因为我需要正确配对它们之后。我需要知道 ListTwo 中 Album 的哪些歌曲要转移到 ListOne 中的 Album 中,以便以后保存。
那么我将如何跟踪这些并在以后将它们连接起来?
初步代码:
媒体接口类:
public interface Media {
void setAuthor(String author);
String getAuthor();
}
书籍类:
public class Book implements Media {
private String author;
Book(){
this.author = "";
}
@Override
public void setAuthor(String author) {
this.author = author;
}
@Override
public String getAuthor() {
return this.author;
}
}
CD(专辑)类:
import java.util.ArrayList;
public class CD implements Media {
public class Song {
private int seconds;
private String songName;
private String artist;
Song(String name, int seconds, String artist){
this.songName = name;
this.seconds = seconds;
this.artist = artist;
}
public String getName(){
return this.songName;
}
public void setName(String name){
this.songName = name;
}
}
private ArrayList<Song> songs;
private String artist;
CD(){
songs = new ArrayList<Song>();
this.artist = "";
}
public void addSong(String name, int seconds, String artist){
this.songs.add(new Song(name, seconds, artist));
}
public void removeSong(int position){
this.songs.remove(position);
}
@Override
public void setAuthor(String author){
this.artist = author;
}
@Override
public String getAuthor(){
return this.artist;
}
}
电影类:
public class Movie implements Media {
private String producer;
Movie(){
this.producer = "";
}
@Override
public void setAuthor(String author){
this.producer = author;
}
@Override
public String getAuthor(){
return this.producer;
}
}
【问题讨论】:
-
欢迎来到 Stack Overflow!我们是一个问答网站,而不是一个雇佣编码员的服务。请将您的问题缩小到本网站主题的特定问题。请参阅:Why is "Can someone help me?" not an actual question? 和 How to ask a good question when I'm not sure what I'm looking for?
-
我问如何同时跟踪两个数组列表。我不知道如何形容它比这更好。
-
不要描述你的代码。发布它。
-
不要发布您的代码。发布minimal reproducible example
-
这似乎是一个相当广泛的设计问题;你可能会从这个Q&A 得到一些见解。