为什么说又见递归呢,因为刚毕业时候找工作,第一家公司的研发主管给我们出的面试题里面就有一道递归,最最经典的递归的例子--汉诺塔.
    再说下又.这个又是因为我最近在搞一个android音乐播放器.其中有一项功能是搜索sd卡上所有的mp3文件.本来呢,使用content provider提供的方法也是可以做到的.不过因为自己对content provider不是很熟悉.所以采取了保守的做法----自己写代码实现.
    具体思路是使用File的listFiles方法来获取目录下的所有文件:如果是目录的话,继续在这个目录下查找;如果是文件的话,则根据文件类型和扩展名来判断是否是mp3文件--如果是mp3文件,则将这个文件加入到列表中.最后我只要获取这个列表就行了.
    怎么实现呢?很明显,这是个递归加循环的算法实现.上面已经把算法描述出来了.不过并没有使用伪代码.不过我也懒得使用伪代码了.直接上真实代码吧.

package com.leipei.util;
   2:  
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
   7:  
import android.util.Log;
   9:  
class Mp3Searcher {
;
private ArrayList<Map<String, String>> musicFileList;
  13:  
public Mp3Searcher() {
new ArrayList<Map<String, String>>();
  16:     }
  17:  
/**
     * 此方法使用递归方式将搜索到的mp3文件信息添加到一个list中
     * @param dir 从哪个路径下开始查找mp3
     */
void getMp3InDir(File dir) {
if (dir.isDirectory()) {
  24:             File[] files = dir.listFiles();
for (File f : files) {
  26:                 getMp3InDir(f);
  27:             }
else {
)) {
new HashMap<String, String>();
, dir.getName());
, dir.getAbsolutePath());
  33:                 musicFileList.add(fileInfoMap);
  34:             }
  35:         }
  36:     }
  37:  
/**
     * 
     * @param dir 要查找mp3的目录,递归查找
     * @return 返回一个list,这个list中包含了所有查找到的mp3文件,如果list为空,则表示没有搜索到mp3
     */
public ArrayList<Map<String, String>> getAllMp3Files(File dir) {
);
this.musicFileList.clear();
this.getMp3InDir(dir);
this.musicFileList;
  48:     }
  49:  
/**
     * 打印mp3搜索结果
     */
void printMusicFileList() {
this.musicFileList.isEmpty()) {
);
else {
this.musicFileList) {
));
));
  61:             }
  62:         }
  63:     }
  64:  
  65: }

相关文章:

  • 2021-07-24
  • 2022-12-23
  • 2021-05-27
  • 2021-07-19
  • 2021-11-22
  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
猜你喜欢
  • 2021-10-07
  • 2021-11-15
  • 2022-12-23
  • 2021-08-27
  • 2022-12-23
  • 2021-05-06
相关资源
相似解决方案