gpt4 book ai didi

java - 将 ArrayList 对象成员与另一个对象中的数据交换 - Java

转载 作者:行者123 更新时间:2023-11-30 04:09:51 25 4
gpt4 key购买 nike

我有一个 MP3Track 类(class),成员如下:轨道编号(int)、轨道名称(String)、艺术家(String)、faourites( boolean 值)等。我的目录类包含两个 ArrayList,一个包含所有轨道 (vectorMain),另一个包含 fovuorites (vectorFav),它们是主目录中轨道的副本。

我希望用户可以选择交换两个轨道编号(这在两个数组中都是唯一的)。

我添加了以下代码来执行此操作并且它可以工作(如果它们存在 - ATM),但它看起来相当麻烦。当然一定有更好的解决方案吗?

getMainIndex() - 返回给定轨道号在 ArrayList 中的索引位置或 -1。

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)));

非常感谢

最佳答案

您应该使用“indexOf”,它是 ArrayList 上的一个方法,用于检索对象的索引。我想你知道如何从那里开始。 http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html

关于java - 将 ArrayList 对象成员与另一个对象中的数据交换 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com