Map和File类小结

Map

1.Map简介
键值对的格式
如:
邓超 = 娘娘
贝克汉姆 = 维多利亚
黄磊 = 孙莉
吴京 = 谢楠

程序开发大部分数据都是键值对形式的

2.<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类型 Collectionvalues(); 返回整个Map双边队列中所有Value对应的Collection集合
【注意】方法名如果是一个复数,返回值类型集合或者是数组情况居多

3.EntrySet

Entry可以认为是键值对对象

格式:

class Entry<K, V> {
		K k;
		V v;
	}

K,V是完全依赖于Map约束的,这里可以Entry里面保存的是每一个键值对类对象

Map中提供的方法:

 Set<Entry<K, V>> entrySet

返回值是键值对类对象Set集合 Set集合中存储的是Entry类型 Entry类型是带有泛型的

实际代码:

HashMap<String, String> map = new HashMap<String, String>();
		
		map.put("吴京", "谢楠");
		map.put("邓超", "娘娘");
		map.put("黄磊", "孙莉");
		map.put("王宝强", "XX");
		
		Set<Map.Entry<String, String>> entrySet = map.entrySet();
		
		System.out.println(entrySet);

最后输出的是 map中的键值对。

4.TreeMap<K, V> 以及Comparable和Comparator

K是需要有对应的比较方式,如果没有比较方式,无法存入。

推荐使用Comparator接口

使用方式:

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("王可可", 1), "111"); 
		map2.put(new Dog("八公", 2), "111"); 
		map2.put(new Dog("豆豆", 3), "111"); 
		map2.put(new Dog("老黄", 4), "111"); 
		map2.put(new Dog("旺财", 5), "111"); 
		
		System.out.println(map2);
		

在此处Map2的输出格式就是按照年龄升序进行输出,这里使用了内部类,进行比较两个Dog类的年龄。

File类

SUN公司提供给开发者操作文件和文件夹的一个类对象。

1.File类的获取方法

  File(String pathName);
		根据对应的文件路径创建获取对应的File类对象,可以是文件,可以是文件夹。
		
	File(String parent, String child);
		根据对应的父目录文件夹路径,以及子文件名或者子文件夹名,创建对应的File类对象
		
	File(File parent, String child);
		根据对应的父目录文件夹File类对象,以及子文件名或者子文件夹名,创建对应File类对象

2.路径的相关知识

相对路径
. 当前工作目录
… 父目录/上级目录
正对于当前工作目录和其他文件或者文件夹之间的最小路径

绝对路径 唯一的路径。 Windows操作系统 C D E F… 每一个盘符都是一个根目录开始
C:/Windows/System32 Linux UNIX macOS 存在一个 / 目录文件
/user/liuxiaolei/appliction

路径分隔符 Windows 分隔符 默认是 \ Linux UNIX macOS 分隔符 默认是 /
Windows是支持Linux分隔符 / 没有任何问题 根据当前系统来区分不同的分隔符 File.separatorCha

文件对象的创建:

/*
		 * 1. 路径分隔符 \\ or / or File.separator
		 * 2. 操作文件必须带有文件的后缀名 1.txt 2.java ...
		 */
		File file = new File("C:\\aaa");
		File file1 = new File("C:" + File.separator + "aaa");
		File file2 = new File("C:/aaa", "1.txt");
		File file3 = new File(file, "bbb");

文件夹的创建:

boolean createNewFile();
通过File类对象调用,创建对应File类对象中保存的路径的普通文件。
创建成功返回true,创建失败返回false
返回false的原因:
1. 路径不合法。
2. 对应的文件夹没有写入权限。 rwxr-xr-x
3. 对应当前的文件已经存在。

boolean mkdir();
通过File类对象调用,创建对应File类对象中保存路径的文件夹
创建成功返回true,创建失败返回false
返回false的原因
1. 路径不合法。
2. 对应的文件夹没有写入权限。
3. 对应当前的文件夹已经存在。

boolean mkdirs();
通过File类对象创建其中保存的文件目录的所有对应文件夹,包括中间路径
如果创建失败,返回false

文件或者文件夹的删除

boolean delete();
通过File类对象调用,删除对应的文件或者文件夹
【要求】
1. 删除的文件或者文件夹都是直接抹掉数据,不是放入回收站
2. 无法删除非空文件夹,文件夹中存在其他内容无法整体删除。

void deleteOnExit();
程序退出时删除对应的文件或者文件夹
用于删除程序运行过程中,留下的日志文件,缓冲文件,操作日志…

文件属性的判断

boolean isFile();
判断是否是一个普通文件
boolean isDirctory();
判断是否是一个文件夹
boolean isAbsolute();
判断是否使用了绝对路径
boolean isHidden();
判断是否是隐藏文件
boolean exists();
判断文件是否存在

文件属性的获取

唬人方法
一下方法和文件是否存在没有一分钱关系,都可以使用字符串操作直接得到我们想要的结果
String getPath();
获取File类对象保存的路径
String getName();
获取当前File类对象中保存的文件名或者文件夹名
String getParent();
获取当前File类对象对应文件或者文件夹的父目录路径
String getAbsolutePath();
获取当File类对象对应文件或者文件夹的绝对路径

有用方法: long lastModified() 获取文件的最后一次修改时间,返回值是一个时间戳类型。 从1970年01月01日
00:00:00到现在的秒数。计算机元年 long length(); 获取文件的大小,占用硬盘空间字节数。
如果操作的是文件夹,返回0L

列表方法(返回数组)

static File[] listRoots();
通过File类调用,有且针对于Windows操作系统有效,获取当前电脑内所有根盘符对象,如果是Linux,UNIX,macOS是无效的。

File[] listFiles();
通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的File类对象数组

String[] list();
通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的String类型文件名或者文件夹名字数组

文件名过滤器

格式:

 interface FilenameFilter
	boolean accept(File dir, String name);

实现:

File file = new File("C:\\aaa\\ddd");
		
		// 使用匿名内部类的匿名对象直接作为方法的参数
		File[] listFiles = file.listFiles(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				/*
				 * dir是当前操作的文件夹类对象
				 * name是当前文件夹下的子文件或者子文件夹名字
				 * 
				 * 获取对应的java文件
				 * 		1. 判断是不是普通文件
				 * 		2. 判断当前文件名是不是.java结尾
				 */

				return new File(dir, name).isFile()
						// endsWith字符串方法,判断当前字符串是不是已指定要求结尾
						&& name.endsWith(".java");
			}

基本格式是:用内部类调用了这个接口内的方法,在方法内返回这个文件的格式是不是以要求的结尾。

发布了5 篇原创文章 · 获赞 9 · 访问量 807

猜你喜欢

转载自blog.csdn.net/Luyihx/article/details/104501621