日期:2014-05-20  浏览次数:20724 次

苦恼的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一下
以上提供个思路,可能实现起来反而麻烦,你自己参考一下就行了