java中的HashMap(映射)与File/io

本文详细介绍了Java中映射(Map)的概念及其主要操作方法,并对比了HashMap与HashTable两个实现类的特点。此外,还深入讲解了File类的使用方法,包括文件与目录的创建、删除等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java18

关于映射----Map<K,V>

映射不是集合,java集合类框架与映射有间接关系

K----键

V----值

由键得到值,保证键不能重复,把这一对数据(键和值),统称为键值对

一个映射是由多个键值对组成;

可以同时操作两个有关联的数

为了方便操作键和值,就把键值对抽取成一个类—Map.Entry

Enty

重复的键会覆盖

map.containskey();判断一个键是否存在于该映射

map.containskey();判断一个值是否存在于该映射

将映射中的键值对(Map.entry对象)存放于Set集合中进行返回
Set<Map.entry<String.Integer>> s = map.entrySet();

根据键获取值,如果该映射不存在该值,则返回一个null

map.get(“a”);

把所有的键存放到Set集合中,进行返回;

Set set = map.keySet();

map.remove(“x”)—根据键删除一组键值对

把映射的所有值储存到一个集合中进行返回

Collection c = map.values();

实现类

HashMap

可以允许存储null键和null值,默认初始容量为16;默认扩容增加一倍

如果指定初始容量,指定的值在2n~2n+1,那么底层真实容量就是2`n+1;

异步式线程不安全的集合;

HashTable

不允许存储null键和null值,默认初始容量是11,默认扩容是增加一倍再加一;

若指定容量,则指定多少,底层的真实容量就是多少,同步式安全集合;

---------------------------

关于File

File—代表文件或者目录(文件夹)的类;

在创建过程中,不会去检测真实的路径;

只是在根据给定的路径创建对象

File file =new File(“E:\s\c\d\c”);

file.mkdirs();创建文件夹

file.delete();删除文件夹或者空目录,删除后不会放入回收站—直接删除;



public static void main(String[] args) {
		//创建映射对象
		Map<String, Integer> map=new HashMap<>();
		//添加元素
		map.put("a", 1);
		map.put("b", 2);
		map.put("c", 3);
		map.put("d", 4);
		//重复键--覆盖
		//map.put("a", 6);
		//判断映射是否包含键
		//System.out.println(map.containsKey("c"));
		//判断是否包含值
		//System.out.println(map.containsValue(7));
		//把映射中的键值对(Entry对象)存放Set集合中进行返回
		//Set<Map.Entry<String, Integer>> s=map.entrySet();
		//根据键获取值---键不存在返回null
		//System.out.println(map.get("u"));
		//返回的把所有的键存放到Set集合中
		//Set<String> set=map.keySet();
		//根据键删除键值对
		//map.remove("a");
		//删除键值对
		//同时满足才能删除
		//map.remove("u", 3);
		//把映射的所有值存储到一个集合中进行返回
		//Collection<Integer> c=map.values();
		//
		System.out.println(map);
		
	}

2.遍历映射
1、根据键遍历映射

		public static void main(String[] args) {
			////创建映射对象
			Map<String, Integer> map=new HashMap<>();
			//添加元素
			map.put("a", 1);
			map.put("b", 2);
			map.put("c", 3);
			map.put("d", 4);
			 
			//1.获取映射中所有的键
			Set<String> set=map.keySet();
			//遍历键
			//增强for循环
			for (String string : set) {
				//由键获取指定值
				System.out.println(string+"="+map.get(string));
			}
		}
	
2、根据键值对获取对应的键和值
	public static void main(String[] args) {
			// 创建映射对象
			Map<String, Integer> map = new HashMap<>();
			// 添加元素
			map.put("a", 1);
			map.put("b", 2);
			map.put("c", 3);
			map.put("d", 4);
			
			//2.获取所有的键值对
			/*Set<Map.Entry<String, Integer>> set=map.entrySet();
			//遍历所有的键值对---遍历Set集合
			for (Entry<String, Integer> entry : set) {
				//每个entry就是具体的entry对象就是具体的键值对
				System.out.println(entry.getKey()+"="+entry.getValue());
			}*/
			//开发中
			for(Map.Entry<String, Integer> entry:map.entrySet()){
				//每个entry就是具体的entry对象就是具体的键值对
				System.out.println(entry.getKey()+"="+entry.getValue());
			}
		}

3.实现类
1、HashMap
可以允许存储null值和null键,默认初始容量为16,默认扩容是增加一倍,如果指定初始容量,指定的值在2n~2n+1,那么底层真实的容量就是2`n+1 异步式线程不安全的集合

2、HashTable
不允许存储null值和null键,默认初始容量是11,默认扩容是增加一倍再加一 11—22+1–46+1,如果指定初始容量底层真实的初始容量就是多少 同步式线程安全的集合

映射是集合?不是 java集合类框架(Java Collection Framwork)—集合、映射以及相关的操作类(Collection、Collections、Map、数组、操作数组、Comparable接口、Iterator接口…)

练习:
1.通过映射统计一个字符串中所有字符出现的次数

public static void main(String[] args) {
		//字符串
		String str="wqefdsvsdqvhw";
		//创建映射对象---键代表字符   值---字符出现次数
		Map<String, Integer> map=new HashMap<>();
		
		//遍历字符串--把字符串中每个字符存入到映射中
		for(int i=0;i<str.length();i++){
			//获取到每个字符
			//判断要存入的映射的字符是否已经包含了
			char c=str.charAt(i);
			if(map.containsKey(c+"")){
				//获取上一次这个键对应的值再加1
				map.put(c+"", map.get(""+c)+1);
			}else{//第一次存入---不包含
				
				map.put(""+c, 1);
			}
			
		}
		
		//遍历映射
		for(Map.Entry<String, Integer> entry:map.entrySet()){
			System.out.println(entry.getKey()+"="+entry.getValue());
		}
		
	}

关于File–目录

import java.io.File;
import java.io.IOException;

public class FileDemo1 {
	
	public static void main(String[] args) throws IOException {
		//创建File类对象
		//在创建对象过程中不会去检测真实的路径
		//只是在根据给定的路径创建对象
		File file=new File("D:\\a.txt");
		//创建文件---空文件
		//boolean b=file.createNewFile();
		//创建文件夹---目录
		//不仅可以创建文件夹或者目录还可以创建多级目录
		//boolean b=file.mkdirs();
		
		//可以删除文件(有无内容),删除空目录
		//直接删除---不会放在回收中
		boolean b=file.delete();
		//
		System.out.println(b);
	}

}







import java.io.File;

public class FileDemo2 {
	
	public static void main(String[] args) {
		//创建文件类对象
		File file=new File("D:\\");
		//获取当前目录下的所有文件以及文件夹的信息
		File[] fs=file.listFiles();
		//遍历数组
		for (File f : fs) {
			System.out.println(f);
		}
		
		//判断是否是文件
		System.out.println(file.isFile());
		//判断是否是文件夹---目录
		System.out.println(file.isDirectory());
		
	}

}





import java.io.File;

public class FileDemo3 {
	
	public static void main(String[] args) {
		//创建文件类对象
		File file=new File("D:\\a\\b\\c");
		//返回目录或者文件的名称
		System.out.println(file.getName());
		//返回所在目录路径
		System.out.println(file.getParent());
		//返回所在位置的路径以及名称
		System.out.println(file.getPath());
	}

}



import java.io.File;

public class FileText1 {
	public static void main(String[] args) {
		//获取文件类对象
		File file=new File("D:\\a");
		//调用方法
		deleFile(file);
	}
	
	//删除文件
	public static void deleFile(File file){
		//判断是否是文件夹
		if(file.isDirectory()){
			//获取当前文件夹下所有的信息
			File[] fs=file.listFiles();
			//遍历数组
			for (File f : fs) {
				//把数组里的每一个文件类对象再次传入到本方法中
				deleFile(f);
			}
		}
		
		//删除文件---删除空目录
		file.delete();
	}
}

其余用法可以查看API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值