苦恼的Vector排序
各位麻烦了,小弟在做一个mp3播放器其中[code]private Vector fileName,dirName,numList;
[/code]
fileName记录各个文件名,dirName记录各个文件的绝对路径,numList记录在Jlist列表里显示要播放的音乐。现在根据fileName想进行字典排序,相应的改变dirName,然后改变numList,最终重新显示Jlist。在这里我想用冒泡法进行
尝试用2种方法来改变Vector fileName的植,但是都没有成功。编译没有错误
但是没有任何显示
[code]public void filesort(){
String dirNamecopy=new String();
Object filecompare=new Object();
String[] interspace=new String[fileName.size()];
int i,j;
for(i=0;i <fileName.size();i++)
interspace[i]=fileName.elementAt(i).toString();
for(i=0;i <fileName.size();i++)//冒泡法
for(j=0;j <fileName.size()-i-1;j++)
if(interspace[j].compareTo(interspace[j+1])> 0)//string进行比较
{
filecompare=fileName.get(j+1) //用Object来接受get()
fileName.setElementAt(fileName.elementAt(j),j+1);
fileName.setElementAt(filecompare,j);
dirNamecopy=dirName.elementAt(j+1).toString(); //用String来接受
dirName.setElementAt(dirName.elementAt(j),j+1);
dirName.setElementAt(dirNamecopy,j);
}
for(i=0;i <fileName.size();i++)//重新设置numList
numList.setElementAt((i+1)+ ". "+fileName.elementAt(i).toString(),i);
list.setListData(numList); //并且在Jist中显示出来
}[/code]
我知道可以根据[code]Comparator comp=Collections.reverseOrder();
Collections.sort(fileName, comp); [/code]可以实现排序 但是我对应的dirName似乎就无从下手了。请问大家这究竟是怎么一回事情呢?先谢谢了
------解决方案--------------------你别做成三个vector,你可以这么做
1做成hashtable或者是连表之类的,让fileName和dirName和numList成为一个整体。
2你将flieName dirName, numList用特殊字符连接起来,排序算法仍然只排fileName,最后再用split 分开
3再一种可能不实用了,你放到表中,让fileName做主键,然后select order一下
以上提供个思路,可能实现起来反而麻烦,你自己参考一下就行了