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(); } } |