各位麻烦了,小弟在做一个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似乎就无从下手了。请问大家这究竟是怎么一回事情呢?先谢谢了

解决方案 »

  1.   

    你别做成三个vector,你可以这么做
    1做成hashtable或者是连表之类的,让fileName和dirName和numList成为一个整体。
    2你将flieName dirName, numList用特殊字符连接起来,排序算法仍然只排fileName,最后再用split 分开
    3再一种可能不实用了,你放到表中,让fileName做主键,然后select order一下
    以上提供个思路,可能实现起来反而麻烦,你自己参考一下就行了
      

  2.   

    额。。
    设计一个类,filename和dirname为其属性,对对象进行排序,排序的比较方法为比较filename即可