Java map笔记
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的子类
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 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[] System.out.println(Arrays.toString(file)); //获得一个目录下的子文件的对象listFiles也是放到数组中 //应用较多 File File[] System.out.println(Arrays.toString(files)); file1.list();//获得文件子文件的名字,主要还是使用listFiles方法 |
文件的判断:
|
File System.out.println(file.exists()); //判断这个文件对象是否是文件isFile System.out.println(file.isFile()); //判断这个文件对象是否是目录返回布尔值 System.out.println(file.isDirectory()); //判断一个文件是否是绝对路径 System.out.println(file.isAbsolute()); File //查看文件是否可读的canRead或者是否可写 System.out.println(file1.canRead()); System.out.println(file1.canWrite()); //文件是否是隐藏的 System.out.println(file1.isHidden()); |
递归:
属于一种算法,方法本身调用本身:求5的阶乘
|
publicstaticvoid 的阶乘 /* * 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 intresult if(num //方法的自身调用自身 result } 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的子类
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 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[] System.out.println(Arrays.toString(file)); //获得一个目录下的子文件的对象listFiles也是放到数组中 //应用较多 File File[] System.out.println(Arrays.toString(files)); file1.list();//获得文件子文件的名字,主要还是使用listFiles方法 |
文件的判断:
|
File System.out.println(file.exists()); //判断这个文件对象是否是文件isFile System.out.println(file.isFile()); //判断这个文件对象是否是目录返回布尔值 System.out.println(file.isDirectory()); //判断一个文件是否是绝对路径 System.out.println(file.isAbsolute()); File //查看文件是否可读的canRead或者是否可写 System.out.println(file1.canRead()); System.out.println(file1.canWrite()); //文件是否是隐藏的 System.out.println(file1.isHidden()); |
递归:
属于一种算法,方法本身调用本身:求5的阶乘
|
publicstaticvoid 的阶乘 /* * 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 intresult if(num //方法的自身调用自身 result } 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();
}
}
Java map笔记的更多相关文章
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145330第五周《Java学习笔记》
20145330第五周<Java学习笔记> 这一周又是紧张的一周. 语法与继承架构 Java中所有错误都会打包为对象可以尝试try.catch代表错误的对象后做一些处理. 使用try.ca ...
- Java系列笔记(6) - 并发(上)
目录 1,基本概念 2,volatile 3,atom 4,ThreadLocal 5,CountDownLatch和CyclicBarrier 6,信号量 7,Condition 8,Exchang ...
- Java学习笔记——动态代理
所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记——RMI&q ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- Java开发笔记(八十二)注解的基本单元——元注解
Java的注解非但是一种标记,还是一种特殊的类型,并且拥有专门的类型定义.前面介绍的五种内置注解,都可以找到对应的类型定义代码,例如查看注解@Override的源码,发现它的代码定义是下面这样的: @ ...
- Java开发笔记(六十五)集合:HashSet和TreeSet
对于相同类型的一组数据,虽然Java已经提供了数组加以表达,但是数组的结构实在太简单了,第一它无法直接添加新元素,第二它只能按照线性排列,故而数组用于基本的操作倒还凑合,若要用于复杂的处理就无法胜任了 ...
- Java开发笔记(六十六)映射:HashMap和TreeMap
前面介绍了两种集合的用法,它们的共性为每个元素都是唯一的,区别在于一个无序一个有序.虽说往集合里面保存数据还算容易,但要从集合中取出数据就没那么方便了,因为集合居然不提供get方法,没有get方法怎么 ...
随机推荐
- 教你如何在Deepin搭建Qt开发环境(sudo apt-get install qt5-default qt5-qmake g++ qtcreator,也许对龙芯版的Deepin也有用)
首先教大家一种很简单的方法,打开终端输入以下命令: sudo apt-get install qt5-default qt5-qmake g++ qtcreator 上面的命令会自动帮你安装qt5开发 ...
- QT---基于WinPcap的局域网络管理工具(主机扫描、包过滤、ARP攻击、端口扫描)
主要功能 本机适配器扫描 局域网各主机扫描 类似于WinShark的抓包工具,能够简单的过滤Tcp.Udp.Arp等包 ARP攻击功能,限制局域网内指定主机上网 流量统计,统计实时网速 多线程攻击,多 ...
- android核心系列--1,组件生命周期
一,进程模型及进程托管 1,一个APP应用是由一个或多个组件构成的,这些组件可以运行在一个进程中,也可以分别运行在多个进程中: 进程的构造和销毁是由系统全权负责的. 2,一个应用进程只有一个应用环境对 ...
- vs2010添加TSTCON( ActiveX Control Test Container )工具
vs2010中的TSTCON( ActiveX Control Test Container )工具非自动安装,而是作为一个例程提供.所以应找到该例程,并编译: 如vs2010安装在默认路径则 1, ...
- [Err] 1146 - Table 'performance_schema.session_status' doesn't exist已解决
刚刚接触MySQL,就往数据库添加数据,就遇到这个问题 解决方案就是找到你安装MySQL的bin目录 然后在cmd输入 mysql_upgrade -u root -p --force 回车,然后输入 ...
- pycharm窗口选项卡管理
1.主题 我们已经注意到Pycharm的主编辑框是基于窗口选项卡机制显示的,Pycharm选项卡多种多样,这里我们将详细介绍这种选项卡机制. 2.激活的选项卡 每当我们打开一个Python文件时op ...
- SYN5307型数字式电秒表
SYN5307型数字式电秒表 产品概述 SYN5307型数字式电秒表是由西安同步电子科技有限公司精心设计生产的一款多功能,高精度电秒表.该仪器采用高精度石英晶振作为测量基准,测量准确度高于一般的电秒表 ...
- UTM (Urchin Tracking Module) codes
UTM Codes are a great way to see the results of your offline marketing In today’s day and age, we ar ...
- 03- 基本的SQL语句介绍
01 库的操作新增库create database db1 charset utf8; # 由于在my.ini中已经配置了字符集,所以,charset utf8可以不写 查库# 查看当前创建的数据库s ...
- Docker 安装mysql容器数据卷挂载到宿主机
环境 Centos:7 Docker: 17.05-ce Mysql: 5.7 1. Mysql外部数据和配置文件路径 msyql配置文件路径:/etc/mysql mysql数据卷路径:/var/l ...