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~2
n+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~2
n+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