トラック番号 (int)、トラック名 (String)、アーティスト String)、faourites (boolean) などのメンバーを持つクラス MP3Track があります。私のカタログ クラスには 2 つの ArrayLists が含まれています。 (vectorFav) メイン カタログのトラックのコピーです。
ユーザーが 2 つのトラック番号 (両方のアレイで一意) を交換できるようにしたいと考えています。
これを行うために次のコードを追加しましたが、動作します (存在する場合 - ATM) が、かなり面倒です。もっと良い解決策があるはずです。
getMainIndex() - 指定されたトラック番号または -1 の ArrayList 内のインデックス位置を返します。
public void swapTrack(){
int t1 = -1, t2 = -1;
System.out.println(face.getSwapTrackMenu());
System.out.print("1) Please enter first track number to swap: ");
t1 = scan.readInt();
System.out.print("2) Please enter second track number to swap: ");
t2 = scan.readInt();
if((getMainIndex(t1)!=-1)&&(getMainIndex(t2)!=-1)){
String s1 = null;
String s2 = null;
for(MP3Track track : vectorMain){
if(track.getTrackNo() == t1){
s1 = track.getTitle();
}
if(track.getTrackNo() == t2){
s2 = track.getTitle();
}
}
for(MP3Track track : vectorMain){
if(track.getTitle().equals(s1)){
track.setTrackNo(t2);
}
if(track.getTitle().equals(s2)){
track.setTrackNo(t1);
}
}
for(MP3Track track : vectorFav){
if(track.getTitle().equals(s1)){
track.setTrackNo(t2);
}
if(track.getTitle().equals(s2)){
track.setTrackNo(t1);
}
}
}
}//End moveTrack
私はJavaが初めてなので、提案、改善、コメントを歓迎します。
どうもありがとう
さて、私は次のことも試しましたが、これはよりエレガントで機能しているようです??? しかし、確かにこれを達成するためのより良い方法はありますか?? 私は何が欠けていますか?ここでレンガの壁にぶち当たりました!
for(MP3Track track : vectorMain){
if(track.getTrackNo() == t1){
mp31 = vectorMain.get(getMainIndex(t1));
//mp31.setTrackNo(t2);
}
if(track.getTrackNo() == t2){
mp32 = vectorMain.get(getMainIndex(t2));
//mp32.setTrackNo(t1);
}
}
mp31.setTrackNo(t2);
mp32.setTrackNo(t1);
vectorMain.add(vectorMain.remove(getMainIndex(t1)));
vectorMain.add(vectorMain.remove(getMainIndex(t2)));
for(MP3Track track : vectorFav){
if(track.getTrackNo() == t1){
mp31 = vectorFav.get(getFavIndex(t1));
}
if(track.getTrackNo() == t2){
mp32 = vectorFav.get(getFavIndex(t2));
}
}
mp31.setTrackNo(t2);
mp32.setTrackNo(t1);
vectorFav.add(vectorFav.remove(getFavIndex(t1)));
vectorFav.add(vectorFav.remove(getFavIndex(t2)));
どうもありがとう