Java从入门到精通20==》MAP集合、File类、递归(简单了解)
文章目录
一、MAP集合
1、什么是MAP集合
MAP集合是一种数据结构,也称为映射或关联数组。它存储的是一组键值对,其中每个键都唯一地标识一个值。这意味着,给定一个键,就可以查找并获取相应的值。在Map集合中,键和值可以是任何类型的数据,包括整数、字符串、对象等等
2、Map集合的特点
- 双列集合,一个键对应一个值
- 键不可以重复,值可以重复
3、MAP集合与Collection集合的区别
- Collection中的集合,只能一次存一个值
- Map中的集合,一次可以存两个(key,value)
4、MAP的实现
因为Map是接口,使用使用的是多态的手法来实现MAP
5、MAP的方法
- size()
返回MAP集合中键值对的数量 - entrySet()
返回包含MAP集合中所有键值对的Set集合 - put(key, value)
将键值对(key, value)添加到MAP集合中。 - get(key)
返回键为key的值 - keySet()
返回MAP集合中所有键的集合 - values()
返回MAP集合中所有值的集合 - clear()
清空MAP集合中的所有键值对 - remove(key)
从MAP集合中删除键为key的映射
6、取值操作
在此之前创建一个标准的JavaBean类
package MAP集合取值操作;
import java.util.Objects;
public class Student {
private int id;
private String name;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id && Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student() {
}
public Student(int id, String name) {
this.id = id;
this.name = name;
}
}
Map集合遍历键找值方式
- 获取所有键的集合。
- 遍历键的集合,获取到每一个键。
- 根据键找值、
代码示例:
package MAP集合取值操作;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Map集合遍历键找值方式 {
public static void main(String[] args) {
Map<Student,String> map=new HashMap<>();//创建集合
Student s1 = new Student(101,"小一");
Student s2 = new Student(102,"大二");
Student s3 = new Student(103,"张三");
map.put(s1,"北京");
map.put(s2,"天津");
map.put(s3,"南京");//添加元素
//获取键
Set<Student> set = map.keySet();
//创建迭代器
Iterator<Student> it = set.iterator();
while (it.hasNext()){//迭代输出
Student student= it.next();
System.out.print(map.get(student)+" ");
System.out.print(student.getId()+" ");
System.out.println(student.getName());
}
}
}
获取所有键值对对象的集合
- 获取所有键值对对象的集合
- 遍历键值对对象的集合,得到每一个键值对对象
- 根据键值对对象获取键和值
代码示例:
package MAP集合取值操作;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Map集合遍历键找值方式 {
public static void main(String[] args) {
Map<Student, String> map = new HashMap<>();//创建集合
Student s1 = new Student(101, "小一");
Student s2 = new Student(102, "大二");
Student s3 = new Student(103, "张三");
map.put(s1, "北京");
map.put(s2, "天津");
map.put(s3, "南京");//添加元素
//获取键值对
Set<Map.Entry<Student, String>> set = map.entrySet();
//for强循环
for (Map.Entry<Student, String> entry : set) {
Student student= entry.getKey();
System.out.print(entry.getValue()+" ");
System.out.print(student.getId()+" ");
System.out.println(student.getName());
}
}
}
二、File类
1、什么是File类
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作
2、构造方法
- public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
- public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
- public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
package File类;
import java.io.File;
public class Demo {
public static void main(String[] args) {
File f = new File("D:x\\a\\b\\c\\d\\e\\f");
String s1=new String("D:x\\a\\b\\c");
String s2=new String("d\\e\\f");
File f0= new File("D:x\\a\\b\\c");
File f1=new File(s1,s2);
File f2=new File(f0,s2);
System.out.println(f);
System.out.println(f1);
System.out.println(f2);
}
}
3、常用方法
public String getAbsolutePath()
:返回此File的绝对路径名字符串。public String getPath()
:将此File转换为路径名字符串。public String getName()
:返回由此File表示的文件或目录的名称。public long length()
:返回由此File表示的文件的长度。public boolean exists()
:此File表示的文件或目录是否实际存在。public boolean isDirectory()
:此File表示的是否为目录。public boolean isFile()
:此File表示的是否为文件。public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。public boolean delete()
:删除由此File表示的文件或目录。public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。public String[] list()
:返回一个String数组,表示该File目录中的所有子文件或目录。public File[] listFiles()
:返回一个File数组,表示该File目录中的所有的子文件或目录。
4、路径
- 绝对路径:从盘符开始的路径,这是一个完整的路径。例如:/home/user/file.txt
- 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。例如:./file.txt(表示当前目录下的file.txt)、…/file.txt(表示当前目录上一级目录下的file.txt)
三、递归
1、什么是递归
递归是一种编程技巧,在一个函数中直接或间接地调用自身。它通常用于解决需要重复执行相同或类似的任务,但需要不同输入参数的问题。递归函数会把问题拆分成一系列较小的子问题,直到子问题可以直接求解,并逐层返回结果,最终得到整个问题的解
简单的来说,是自己调用自己
二、递归函数需要满足两个条件:
-
必须有一个停止条件,可以直接求解返回;
-
每次调用都必须尽可能地缩小问题规模。
三、一般就是不行或者逻辑能力不强就别用递归了容易错误
package 递归;
public class Demo {
public static void main(String[] args) {
m();
}
static void m(){
m();
};
}