2020-06-17Java入門(二十三)遞歸 過濾器

遞歸

用遞歸的方法計(jì)算1~n

/**

* 遞歸 在一個(gè)方法內(nèi)部 對(duì)自身進(jìn)行調(diào)用

* 用簡(jiǎn)單的程序解決復(fù)雜的問題

* 構(gòu)造函數(shù)不能用遞歸 必須要有 結(jié)束的條件(保證其能停下來 要不然會(huì)有占內(nèi)存溢出)

* 直接遞歸 和間接遞歸

* main方法壓棧執(zhí)行? 直接遞歸方法 調(diào)用方法? 會(huì)在棧內(nèi)存中一直調(diào)用a

*

* 使用遞歸時(shí) 首先要判斷他的結(jié)束條件是什么 在判斷他的方法目的 是加減乘除

*

*/

public class Demo {

public static void main(String[] args) {//程序執(zhí)行的入口

? ? ? ? //構(gòu)造函數(shù)不能遞歸 計(jì)算1到n之間的和不推薦 建議使用for循環(huán)

? ? ? ? /*int sum1 = sum(3);

System.out.println(sum1);*/

? ? ? ? int j=jc(5);

System.out.println(j);

}

public static int sum(int n){//n是3? 2 1(結(jié)束條件)

? ? ? ? //獲取到下一個(gè)被加的數(shù)字

? ? ? ? if (n==1){//結(jié)束條件 到1 未知

? ? ? ? ? ? return 1;

}

return n+sum(n-1);//結(jié)束條件

? ? }

//5的階乘 5 4 3 2 1(結(jié)束條件是1) 目的乘法的目的 方法的主體不變 參數(shù)改變

? ? public static int jc(int a){

if (a==1){

return 1;

}

return a*jc(a-1);

}

}



遞歸打印多及目錄? 遞歸就會(huì)用到方法?

文件搜索?遞歸

過濾器?遞歸文件搜索的優(yōu)化? 用于過濾文件?抽象方法?過濾文件accept??

fileFilter?抽象路徑名的過濾器? fileNameFilter?實(shí)現(xiàn)此接口的類是咧可用于過濾器文件名?file dir目錄

過濾規(guī)則

public class FileNameFilter {

public static void main(String[] args) {

File file1 =new File("F:\\ideawork");

getAllFile(file1);

}

public static void getAllFile(File dir){

// System.out.println(dir);

/**

? ? ? ? * 過濾規(guī)則 pathname 是文件或者是.java結(jié)尾的文件返回true

? ? ? ? * 匿名內(nèi)部類 傳遞對(duì)象

? ? ? ? */

// FileFilter fileFilter = new FileFilter();

//File[] files=dir.listFiles(fileFilter);

/* File[] files=dir.listFiles(new FileFilter() {

@Override

public boolean accept(File pathname) {

? ? ? ? ? ? ? ? //過濾隊(duì)則 pathname是文件加.java

return pathname.isDirectory()||pathname.getName().endsWith(".java");

}

});*/

? ? ? //匿名內(nèi)部類只用lambda表達(dá)式

? ? ? /* File[] files = dir.listFiles((File pathname)->{

return pathname.isDirectory()||pathname.getName().endsWith(".java");

});*/

? ? ? //簡(jiǎn)化

? ? ? ? File[] files = dir.listFiles((/*File*/ pathname)-> pathname.isDirectory()||pathname.getName().endsWith(".java")

);

/*

File[] files=dir.listFiles(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

return new File(dir,name).isDirectory()||name.toLowerCase().endsWith(".java");

}

});*/

? ? ? ? //使用lambda表達(dá)式 優(yōu)化匿名內(nèi)部類 接口中只有一個(gè)抽象方法accept

? ? ? /* File[] files=dir.listFiles((*//*參數(shù)*//*File d,String name)->{

return new File(d,name).isDirectory()||name.toLowerCase().endsWith(".java");

});*/

? ? ? ? //簡(jiǎn)略lambda

? ? ? ? /*File[] files=dir.listFiles((*//*參數(shù)*//**//*File*//* d,*//*String*//* name)->

*//*return*//* new File(d,name).isDirectory()||name.toLowerCase().endsWith(".java")

);*/

//

? ? ? ? for (File file : files) {

if (file.isDirectory()){

getAllFile(file);

}else {

System.out.println(file);

}

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容