805笔记---小白学Java

本文详细介绍了Java中的Map集合,包括HashMap和LinkedHashMap的特点及常用方法,如put、remove、get等。同时,展示了File类的使用,如创建、删除、判断文件属性等。此外,还探讨了递归的概念并给出了查找指定文件夹下所有文件的递归案例。
摘要由CSDN通过智能技术生成

Map集合

Map集合概述-Key,Value键值对

双列集合,用于保存具有映射关系的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szpAMUUM-1659767446742)(Map集合.png)]

常用方法

返回值类型方法名含义
Vput(K key, V value)把指定的键与指定的值添加到Map集合中
Vremove(Object key)如果存在(从可选的操作),从Map集合中删除指定的键 所对应的键值对元素,返回被删除元素的值
Vget(Object key)根据指定的Key来获取Map集合中的值
Set<K>keySet()获取Map集合中所有的键,存储到Set集合中
Set<Map.Entry<K,V>>entrySet()获取到Map集合中所有的键值对对象的集合,该集合是Set集合
Collection<V>values()获取Map集中的所有值,并放在Collection集合中

示例

package com.qfedu.Test;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @Author pengyu
 * @Date 2022/8/6 10:58
 */
public class Demo01 {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        //添加key-value
        map.put(1,"曼曼");
        map.put(2,"李华");
        map.put(4,"依依");
        map.put(3,"涵涵");

        System.out.println(map); //{1=曼曼, 2=李华, 3=涵涵, 4=依依}

        map.remove(3);
        System.out.println(map);  //{1=曼曼, 2=李华, 4=依依}

        System.out.println(map.get(4));  //依依

        System.out.println(map.containsKey(2));  //true

        Set<Integer> set = map.keySet();
        System.out.println(set); //[1, 2, 4]

        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        //遍历集合entries
        for (Map.Entry<Integer, String> entry : entries) {
            System.out.println(entry);
            //1=曼曼
            //2=李华
            //4=依依
        }

        Collection<String> values = map.values();
        //遍历集合values
        for (String value : values) {
            System.out.println(value);
            //曼曼
            //李华
            //依依
        }
    }
}

HashMap

简单介绍

HashMap是Map集合中比较常用的实现类,特点也是根据哈希值进行存储,存储数据采用的哈希表结构(JDK8改为hash表+红黑树),元素的存取顺序不一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

LinkedHashMap

LinkedHashMap继承自HashMap,它的多种操作都是建立在HashMap操作的基础上的。同HashMap不同的是,LinkedHashMap维护了一个Entry的双向链表,保证了插入的Entry中的顺序。

File类

主要用于文件和目录的创建、查找和删除等操作

构造方法

  • public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
  • public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
  • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。

成员方法

大多常用的方法都在示例中存在

package com.qfedu.Test;

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

/**
 * @Author pengyu
 * @Date 2022/8/6 14:00
 */
public class Demo03 {
    public static void main(String[] args) throws IOException {
        //我在我的电脑D盘下面有这个aaa文件夹,并且该文件夹下面还有文件夹和文件
        File file = new File("D:"+ File.separator + "aaa");
        //判断该文件是否存在
        System.out.println(file.exists());  //true
        //获取当前文件的绝对路径
        System.out.println(file.getAbsolutePath());  //D:\aaa
        //获取当前文件的名字
        System.out.println(file.getName());  //aaa
        //将此File转换为路径名字符串。
        System.out.println(file.getPath());  //D:\aaa
        //判断当前文件是否是文件夹
        System.out.println(file.isDirectory());  //true
        //判断当前文件是否是文件
        System.out.println(file.isFile());  //false
        //返回此抽象路径名表示的文件上次修改的时间。
        System.out.println(file.lastModified());  //1659697522993,时间戳从1970.1.1,00:00:00
        //返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
        String[] list = file.list();
        for (String s : list) {
            System.out.println(s);
            //3.txt
            //bbb
            //ccc
        }
        //返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1);
            //D:\aaa\3.txt
            //D:\aaa\bbb
            //D:\aaa\ccc

            //删除由此抽象路径名表示的文件或目录。 返回值是布尔类型的值
            //file.delete();

            //如果路径中没有文件,会创建一个新的文件,需要throws IOException
            //file.createNewFile();

            //测试此抽象路径名命名的文件是否为隐藏文件。
            System.out.println(file.isHidden()); //false

            //创建由此抽象路径名命名的目录。 返回值是布尔类型的值
            //file.mkdir();

            //创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。返回值是布尔类型的值
            //file.mkdirs();
        }
    }
}

递归

递归:我自己调用我自己,即当前方法调用本身

分类

  1. 直接递归:自身调用自己
  2. 间接递归:方法1调用方法2,方法2调用方法3,方法3调用方法1

注意

递归一定要有条件,能够使用递归停下来,不然会内存移除

案例:找到指定文件夹下的所有文件

package com.qfedu.Test;

import java.io.File;

/**
 * @Author pengyu
 * @Date 2022/8/6 14:19
 */
public class Demo04 {
    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "aaa");
        recursion(file);
    }

    public static void recursion(File file) {
        /**
         * 判断如果是文件夹,我们就遍历其所有文件,
         * 将这些文件再次调用recursion(File file),知道找到所有文件进行输出
         */
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File file1 : files) {
                recursion(file1);
            }
        } else {
            System.out.println(file.getName());
        }
        /**
         * 控制台输出:
         * 3.txt
         * 1.txt
         * 2.txt
         */
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值