1.Map双边队列
1.1 什么是Map
Map中是存储的键值对,是将键映射到值的对象。
key : value 这里的key是唯一的 value可以相同
在我们开发中大部分数据都是键值对形式的
Mysql JSON XML Mongodb
interface Map<K, V>
--| class HashMap<K, V> 哈希表结构
--| class TreeMap<K, V> 底层是树形结构,存储要求K有对应的排序方式
1.2 Map<K,V>双边队列方法
put(K k, V v); 存入一个键值对类型,K和V都要符合泛型约束 putAll(Map<? extends K, ? extends V> map); 存入另一个Map双边队列,并且要求添加的Map双边对接中的K和V都要和当前Map中存储 的K和V一致 remove(Object k); 删除对应K的键(Key)值(Value)对 put(K k, V v); 对应当前K存在,修改对应内容 int size(); 当前Map双边队列中,有效键值对个数 boolean isEmpty(); 是否为空 boolean containsKey(Object key); 判断指定的Key是否存在 boolean containsValue(Object value); 判断指定Value是否存在 Set keySet(); 返回整个Map双边队列中所有Key对应的Set集合(【注意】一个方法使用set结尾,表示该方法返回的是一个集合类型,大多是情况下都是Set类型) Collection values(); 返回整个Map双边队列中所有Value对应的Collection集合(【注意】方法名如果是一个复数,返回值类型集合或者是数组情况居多)
1.3 EntrySet
Entry 可以认为是键值对对象
定义在Map类内
class Entry<K, V> {
K k;
V v;
}
K,V是完全依赖于Map约束的,这里可以Entry里面保存的是每一个键值对类对象
Map中提供了一个方法
Set<Entry<K, V>> entrySet
返回值是键值对类对象Set集合,Set集合中存储的是Entry类型Entry类型是带有泛型的.
1.4 TreeMap<K, V> 以及Comparable和Comparator
key 需要有比较方法,否则无法存入。
import java. util. Comparator;
import java. util. TreeMap;
public class Demo3 {
public static void main ( String[ ] args) {
TreeMap< String, String> map = new TreeMap < String, String> ( ) ;
map. put ( "李四" , "1" ) ;
map. put ( "王五" , "1" ) ;
map. put ( "赵六" , "1" ) ;
map. put ( "张三" , "1" ) ;
System. out. println ( map) ;
TreeMap< Dog, String> map2 = new TreeMap < Dog, String> ( new Comparator < Dog> ( ) {
@Override
public int compare ( Dog o1, Dog o2) {
return o1. getAge ( ) - o2. getAge ( ) ;
}
} ) ;
map2. put ( new Dog ( "AA" , 1 ) , "111" ) ;
map2. put ( new Dog ( "BB" , 2 ) , "111" ) ;
map2. put ( new Dog ( "CC" , 3 ) , "111" ) ;
map2. put ( new Dog ( "DD" , 4 ) , "111" ) ;
map2. put ( new Dog ( "EE" , 5 ) , "111" ) ;
System. out. println ( map2) ;
}
}
2.File类
2.1 什么是File类
SUN公司提供给开发者操作文件和文件夹的一个类对象。
获取File类有三种方式(构造方法)
File(String pathName); 根据对应的文件路径创建获取对应的File类对象,可以是文件,可以是文件夹。 File(String parent, String child); 根据对应的父目录文件夹路径,以及子文件名或者子文件夹名,创建对应的File类对象 File(File parent, String child); 根据对应的父目录文件夹File类对象,以及子文件名或者子文件夹名,创建对应File类对象
谈及文件操作必须了解路径的问题。
相对路径
. 当前工作目录
.. 父目录/上级目录
正对于当前工作目录和其他文件或者文件夹之间的最小路径
绝对路径
唯一的路径。
类似C:\Program Files\MySQL 就是绝对路径
路径中分隔符问题:
Windows 分隔符 默认是 \
Linux UNIX macOS 分隔符 默认是 /
注:Windows是支持Linux分隔符 / 没有任何问题
java中可以根据当前系统来区分不同的分隔符 File.separatorChar
2.2 创建文件和文件夹
boolean createNewFile();
通过File类对象调用,创建对应File类对象中保存的路径的普通文件。
创建成功返回true,创建失败返回false
返回false的原因:
1. 路径不合法。
2. 对应的文件夹没有写入权限。
3. 对应当前的文件已经存在。
boolean mkdir();
通过File类对象调用,创建对应File类对象中保存路径的文件夹
创建成功返回true,创建失败返回false
返回false的原因
1. 路径不合法。
2. 对应的文件夹没有写入权限。
3. 对应当前的文件夹已经存在。
boolean mkdirs();
通过File类对象创建其中保存的文件目录的所有对应文件夹,包括中间路径 如果创建失败,返回false
boolean renameTo(File dest);
通过File类对象调用,转为目标File类对象dest
文件/文件夹移动,重命名
2.3 删除文件或者文件夹
boolean delete();
通过File类对象调用,删除对应的文件或者文件夹
【要求】
1. 删除的文件或者文件夹都是直接抹掉数据,不是放入回收站
2. 无法删除非空文件夹,文件夹中存在其他内容无法整体删除。
void deleteOnExit();
程序退出时删除对应的文件或者文件夹
用于删除程序运行过程中,留下的日志文件,缓冲文件,操作日志...
2.4 文件属性判断
boolean isFile(); 判断是否是一个普通文件 boolean isDirctory(); 判断是否是一个文件夹 boolean isAbsolute(); 判断是否使用了绝对路径 boolean isHidden(); 判断是否是隐藏文件 boolean exists(); 判断文件是否存在
2.5 获取文件属性
这些方法与文件是否存在没有关系。 String getPath(); 获取File类对象保存的路径 String getName(); 获取当前File类对象中保存的文件名或者文件夹名 String getParent(); 获取当前File类对象对应文件或者文件夹的父目录路径 String getAbsolutePath(); 获取当File类对象对应文件或者文件夹的绝对路径
这些有文件才能使用 long lastModified() 获取文件的最后一次修改时间,返回值是一个时间戳类型。从1970年01月01日 00:00:00到现在的秒数。(计算机元年) long length(); 获取文件的大小,占用硬盘空间字节数。如果操作的是文件夹,返回0L
2.6 列表方法
static File[] listRoots(); 通过File类调用,有且针对于Windows操作系统有效,获取当前电脑内所有根盘符对象,如果是Linux,UNIX,macOS是无效的。 File[] listFiles(); 通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的File类对象数组 String[] list(); 通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的String类型文件名或者文件夹名字数组
2.7 FilenameFilter文件名过滤器
interface FilenameFilter
boolean accept(File dir, String name);
import java. io. File;
import java. io. FilenameFilter;
public class Demo8 {
public static void main ( String[ ] args) {
File file = new File ( "C:\\aaa\\ddd" ) ;
File[ ] listFiles = file. listFiles ( new FilenameFilter ( ) {
@Override
public boolean accept ( File dir, String name) {
return new File ( dir, name) . isFile ( )
&& name. endsWith ( ".java" ) ;
}
} ) ;
File[ ] listFile = file. listFiles ( ( dir, name) - >
new File ( dir, name) . isFile ( )
&& name. endsWith ( ".java" )
) ;
for ( File file2 : listFile) {
System. out. println ( file2. getName ( ) ) ;
}
}
}