Mapjava
是一個鍵值對的集合算法
花和尚數組 |
豹子頭安全 |
|
|
|
|
|
|
魯智深spa |
林沖線程 |
|
|
|
|
|
|
若是想要從map中得到值,能夠根據鍵對象
Map<Key,velue> 排序
Map雖然是集合,可是和collection的接口無關遞歸
咱們能夠經過key來得到相應的值,每一個鍵只能 映射一個值,一個映射不能包含重複的鍵。接口
Map<K,Y>表示泛型Map的key和value能夠是任何類型(不能是基本數據類型)實際項目中K通常都是字符串類型。
HashMap:
map鍵是惟一的,collection子接口list集合中的與元素是能夠重複的
數據成對出現
一個映射不能包括重複的鍵
其實鍵就是Set,Set元素惟一,只能有一個null,元素是無序的。Map鍵徹底遵守Set的這幾個特色
若是存在重複的Key 就會把以前的覆蓋掉
值是能夠重複的。
import java.util.Map; import java.util.HashMap; publicclass MapTest { publicstaticvoid main(String[]args) { Map<String,String> map = new HashMap<>(); map.put("豹子頭", "林沖"); map.put("及時雨", "松江"); map.put("白日鼠", "白勝"); map.put("瞎蒙子", "白勝"); System.out.println(map); } }
|
值也是能夠多個爲空的!
HashMap的特色
主要特色和map相同,map和set特色相同,而且Hashmap不是線程安全的
兩個線程同時修改HashMap中的數據的時候,就會出錯。
能夠將其變成線程安全,經過collections.`synchrolizedMap(map);能夠經過這個方法將其變爲線程安全的。
TreeMap 和TreeSet相同,他是有序的,根據Key來排序,
本身定義的類對象,若是想要進行排序須要在類中實現Comparable<Person>泛型對象
HashTable 與HashMap的區別在於他是線程安全的,不容許任何的null鍵和值,其他的都同樣、
linkedHashMap是有順序的,根據其添加順序排序,而HashMap是沒有順序排序的。HashMap用的是最多的,其根據鍵的大小排序
File類屬於IO下的類
文件的構造器
文件對象的建立: publicclass FileTest { publicstaticvoid main(String[] args) { //文件的構造器是用來建立文件對象的 //建立文件的時候要保證文件路徑正確。如下是建立了個對象 File file = new File("E:\\FileTest.txt");//文件的絕對路徑 //直接輸出則會打出文件的路徑 System.out.println(file); //第二種建立方式 File file1 = new File("D:\\aaa","tx.txt"); System.out.println(file1.getName()); //java中的file類的對象能夠表明目錄,也能夠表明文件 File file2 = new File("F:\\aaa"); System.out.println(file2.getName()); //3 根據目錄文件建立一個文件 File file3 = new File(file2,"file3.txt"); System.out.println(file3.getName()); //文件構造器的三種方法掌握便可 } }
|
文件的刪除和建立
查看文件是否存在 exists()方法用來查看文件是否存在,存在則返回true不然返回false
//建立目錄 //建立的時候上一層的路徑必須正確 booleannewMkdir = file2.mkdir(); System.out.println(newMkdir); |
若是要同時建立多級目錄則使用mkdirs方法
刪除文件方法
file.delete();刪除方法,刪除後不在回收站,只刪除一個文件。刪除路徑的最後一層,返回值爲布爾型,若是文件夾中有文件的花不可刪除,只有空目錄才能刪除。
文件的獲取功能:
//文件的構造器是用來建立文件對象的 //建立文件的時候要保證文件路徑正確。如下是建立了個對象 File file = new File("E:\\FileTest.txt");//文件的絕對路徑 String absPath = file.getAbsolutePath(); System.out.println(absPath); //相對路徑就是當前項目的根:相對路徑建立方法 //下面這種不指定路徑直接建立文件的方法將把文件夾建立在和 //當前文件同一個文件夾中 File file1 =new File("sts.txt"); System.out.println(file1.getAbsolutePath()); //得到文件txt的大小,得到的是文件所佔用的字節 System.out.println(file1.length()); //得到文件的最後修改時間 lastModified(); System.out.println(file.lastModified()); |
目錄的子文件獲取
//listRoots()該方法獲取此電腦的根目錄,並放到數組中; File[] file = File.listRoots(); System.out.println(Arrays.toString(file)); //得到一個目錄下的子文件的對象listFiles也是放到數組中 //應用較多 File file1 = new File("E:\\A01-java"); File[] files = file1.listFiles(); System.out.println(Arrays.toString(files)); file1.list();//得到文件子文件的名字,主要仍是使用listFiles方法 |
文件的判斷:
File file = new File("E:\\A01-java\\bb"); System.out.println(file.exists()); //判斷這個文件對象是不是文件isFile 返回布爾值 System.out.println(file.isFile()); //判斷這個文件對象是不是目錄返回布爾值 System.out.println(file.isDirectory()); //判斷一個文件是不是絕對路徑 System.out.println(file.isAbsolute()); File file1 = new File("E:\\A01-java//hellow.txt"); //查看文件是否可讀的canRead或者是否可寫 System.out.println(file1.canRead()); System.out.println(file1.canWrite()); //文件是不是隱藏的 isHidden System.out.println(file1.isHidden()); |
遞歸:
屬於一種算法,方法自己調用自己:求5的階乘
publicstaticvoid main(String[] args) { //求5的階乘 /* * 5*4*3*2*1 = 5*4! * 4*3*2*1 = 4*3! * 3*2*1 = 3*2! * 2*1 = 2*1! * 1 = 1! */ System.out.println("五的階乘"+fn(5)); } publicstaticint fn(intnum) { intresult = 1; if(num >1) { //方法的自身調用自身 result = num * fn(num-1); } returnresult; } |
文件的遍歷:
遞歸查詢文件夾下的全部文件:須要長時間翻看
//文件目錄的層級 staticintlevel; publicstaticvoid main(String[] args) { //建立一個目錄 File file = new File("E:\\Program Files\\Java"); pathFile(file); } publicstaticvoid pathFile(File file) { if(file == null) { return; } //給層級作加一 level++; //得到自文件對象的子文件對象列表 File[] files = file.listFiles(); System.out.println(Arrays.toString(files)); //遍歷這個子文件 for(File f : files) { //打印層級縮進,是遍歷的文件夾更好看 for(inti = 0; i<level; i++) { System.out.print("\t"); } System.out.println(f.getName()); if(f.isDirectory()) { pathFile(f); } } //本層次遍歷完畢,把層級減回來 level--; } |
將文件夾中的非目錄文件全刪
//文件目錄的層級 staticintlevel; publicstaticvoid main(String[] args) { //建立一個目錄 File file = new File("E:\\A01-java"); pathFile(file); } publicstaticvoid pathFile(File file) {
if(file == null||!file.exists()) { return; } //得到對象文件的子對象列表、 File[] f = file.listFiles(); for(File filee : f) { if(filee.isDirectory()) { pathFile(filee); }else { filee.delete(); } //通過遍歷刪除文件後,這個文件夾就變成了空的則就能夠刪除文件夾了 //刪除空文件夾 filee.delete(); } } |
Map
是一個鍵值對的集合
花和尚 |
豹子頭 |
|
|
|
|
|
|
魯智深 |
林沖 |
|
|
|
|
|
|
若是想要從map中得到值,能夠根據鍵
Map<Key,velue>
Map雖然是集合,可是和collection的接口無關
咱們能夠經過key來得到相應的值,每一個鍵只能 映射一個值,一個映射不能包含重複的鍵。
Map<K,Y>表示泛型Map的key和value能夠是任何類型(不能是基本數據類型)實際項目中K通常都是字符串類型。
HashMap:
map鍵是惟一的,collection子接口list集合中的與元素是能夠重複的
數據成對出現
一個映射不能包括重複的鍵
其實鍵就是Set,Set元素惟一,只能有一個null,元素是無序的。Map鍵徹底遵守Set的這幾個特色
若是存在重複的Key 就會把以前的覆蓋掉
值是能夠重複的。
import java.util.Map; import java.util.HashMap; publicclass MapTest { publicstaticvoid main(String[]args) { Map<String,String> map = new HashMap<>(); map.put("豹子頭", "林沖"); map.put("及時雨", "松江"); map.put("白日鼠", "白勝"); map.put("瞎蒙子", "白勝"); System.out.println(map); } }
|
值也是能夠多個爲空的!
HashMap的特色
主要特色和map相同,map和set特色相同,而且Hashmap不是線程安全的
兩個線程同時修改HashMap中的數據的時候,就會出錯。
能夠將其變成線程安全,經過collections.`synchrolizedMap(map);能夠經過這個方法將其變爲線程安全的。
TreeMap 和TreeSet相同,他是有序的,根據Key來排序,
本身定義的類對象,若是想要進行排序須要在類中實現Comparable<Person>泛型對象
HashTable 與HashMap的區別在於他是線程安全的,不容許任何的null鍵和值,其他的都同樣、
linkedHashMap是有順序的,根據其添加順序排序,而HashMap是沒有順序排序的。HashMap用的是最多的,其根據鍵的大小排序
File類屬於IO下的類
文件的構造器
文件對象的建立: publicclass FileTest { publicstaticvoid main(String[] args) { //文件的構造器是用來建立文件對象的 //建立文件的時候要保證文件路徑正確。如下是建立了個對象 File file = new File("E:\\FileTest.txt");//文件的絕對路徑 //直接輸出則會打出文件的路徑 System.out.println(file); //第二種建立方式 File file1 = new File("D:\\aaa","tx.txt"); System.out.println(file1.getName()); //java中的file類的對象能夠表明目錄,也能夠表明文件 File file2 = new File("F:\\aaa"); System.out.println(file2.getName()); //3 根據目錄文件建立一個文件 File file3 = new File(file2,"file3.txt"); System.out.println(file3.getName()); //文件構造器的三種方法掌握便可 } }
|
文件的刪除和建立
查看文件是否存在 exists()方法用來查看文件是否存在,存在則返回true不然返回false
//建立目錄 //建立的時候上一層的路徑必須正確 booleannewMkdir = file2.mkdir(); System.out.println(newMkdir); |
若是要同時建立多級目錄則使用mkdirs方法
刪除文件方法
file.delete();刪除方法,刪除後不在回收站,只刪除一個文件。刪除路徑的最後一層,返回值爲布爾型,若是文件夾中有文件的花不可刪除,只有空目錄才能刪除。
文件的獲取功能:
//文件的構造器是用來建立文件對象的 //建立文件的時候要保證文件路徑正確。如下是建立了個對象 File file = new File("E:\\FileTest.txt");//文件的絕對路徑 String absPath = file.getAbsolutePath(); System.out.println(absPath); //相對路徑就是當前項目的根:相對路徑建立方法 //下面這種不指定路徑直接建立文件的方法將把文件夾建立在和 //當前文件同一個文件夾中 File file1 =new File("sts.txt"); System.out.println(file1.getAbsolutePath()); //得到文件txt的大小,得到的是文件所佔用的字節 System.out.println(file1.length()); //得到文件的最後修改時間 lastModified(); System.out.println(file.lastModified()); |
目錄的子文件獲取
//listRoots()該方法獲取此電腦的根目錄,並放到數組中; File[] file = File.listRoots(); System.out.println(Arrays.toString(file)); //得到一個目錄下的子文件的對象listFiles也是放到數組中 //應用較多 File file1 = new File("E:\\A01-java"); File[] files = file1.listFiles(); System.out.println(Arrays.toString(files)); file1.list();//得到文件子文件的名字,主要仍是使用listFiles方法 |
文件的判斷:
File file = new File("E:\\A01-java\\bb"); System.out.println(file.exists()); //判斷這個文件對象是不是文件isFile 返回布爾值 System.out.println(file.isFile()); //判斷這個文件對象是不是目錄返回布爾值 System.out.println(file.isDirectory()); //判斷一個文件是不是絕對路徑 System.out.println(file.isAbsolute()); File file1 = new File("E:\\A01-java//hellow.txt"); //查看文件是否可讀的canRead或者是否可寫 System.out.println(file1.canRead()); System.out.println(file1.canWrite()); //文件是不是隱藏的 isHidden System.out.println(file1.isHidden()); |
遞歸:
屬於一種算法,方法自己調用自己:求5的階乘
publicstaticvoid main(String[] args) { //求5的階乘 /* * 5*4*3*2*1 = 5*4! * 4*3*2*1 = 4*3! * 3*2*1 = 3*2! * 2*1 = 2*1! * 1 = 1! */ System.out.println("五的階乘"+fn(5)); } publicstaticint fn(intnum) { intresult = 1; if(num >1) { //方法的自身調用自身 result = num * fn(num-1); } returnresult; } |
文件的遍歷:
遞歸查詢文件夾下的全部文件:須要長時間翻看
//文件目錄的層級 staticintlevel; publicstaticvoid main(String[] args) { //建立一個目錄 File file = new File("E:\\Program Files\\Java"); pathFile(file); } publicstaticvoid pathFile(File file) { if(file == null) { return; } //給層級作加一 level++; //得到自文件對象的子文件對象列表 File[] files = file.listFiles(); System.out.println(Arrays.toString(files)); //遍歷這個子文件 for(File f : files) { //打印層級縮進,是遍歷的文件夾更好看 for(inti = 0; i<level; i++) { System.out.print("\t"); } System.out.println(f.getName()); if(f.isDirectory()) { pathFile(f); } } //本層次遍歷完畢,把層級減回來 level--; } |
將文件夾中的非目錄文件全刪
//文件目錄的層級 staticintlevel; publicstaticvoid main(String[] args) { //建立一個目錄 File file = new File("E:\\A01-java"); pathFile(file); } publicstaticvoid pathFile(File file) {
if(file == null||!file.exists()) { return; } //得到對象文件的子對象列表、 File[] f = file.listFiles(); for(File filee : f) { if(filee.isDirectory()) { pathFile(filee); }else { filee.delete(); } //通過遍歷刪除文件後,這個文件夾就變成了空的則就能夠刪除文件夾了 //刪除空文件夾 filee.delete(); } } |