Java从入门到精通20==》MAP集合、File类、递归(简单了解)

Java从入门到精通20==》MAP集合、File类、递归(简单了解)

2023.8.11

一、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集合遍历键找值方式
  1. 获取所有键的集合。
  2. 遍历键的集合,获取到每一个键。
  3. 根据键找值、

代码示例:

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());
        }
    }
}

在这里插入图片描述

获取所有键值对对象的集合
  1. 获取所有键值对对象的集合
  2. 遍历键值对对象的集合,得到每一个键值对对象
  3. 根据键值对对象获取键和值

代码示例:

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();
    };
}

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我头像真的只是只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值