java学习笔记(16) ---Stream流和File类

Stream类

1、什么是Stream流?
        在Java 8中,得益于Lambda所带来的函数式编程,
        引入了一个全新的Stream流概念 ,用于解决已有集合/数组类库有的弊端。

2、Stream流能解决什么问题?
        可以解决已有集合类库或者数组API的弊端。
        Stream认为集合和数组操作的API很不好用,所以采用了Stream流简化集合和数组的操作!!
Stream流式思想的核心:是先得到集合或者数组的Stream流(就是一根传送带),然后就用这个Stream流操作集合或者数组的元素。然后用Stream流简化替代集合操作的API.
        集合获取Stream流用: stream();
         数组:Arrays.stream(数组)   /  Stream.of(数组)
;
 

 public static void main(String[] args) {
        // 集合变成流
        Collection<String> collection = new ArrayList<>();
        collection.add("123");
        Stream<String> ss = collection.stream();

        // Map变成流
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("1", 1);
        Stream<String> keys = hashMap.keySet().stream();
        Stream<Integer> values = hashMap.values().stream();
        Stream<Map.Entry<String, Integer>> keyAndValue = hashMap.entrySet().stream();

        // 数组获取流
        String[] arrs = new String[]{"1", "2", "3", "4"};
        Stream<String> arrsStream = Arrays.stream(arrs);
    }

3、Stream流的常用API

         -- Stream<T> filter(Predicate<? super T> predicate)
         forEach : 逐一处理
         count:统计个数
            -- long count();
         filter : 过滤元素
         limit : 取前几个元素
         skip : 跳过前几个
         map : 加工方法(把原来的元素加工以后,从新放上去)
         concat : 合并流
            -- public static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)

4、收集Stream流(将Stream转化成集合或数组)

Stream的作用是:把集合转换成一根传送带,借用Stream流的强大功能进行的操作。
        但是实际开发中数据最终的形式还是应该是集合,最终Stream流操作完毕以后还是要转换成集合。
        这就是收集Stream流。
收集Stream流的含义:就是把Stream流的数据转回到集合中去。

import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class _2022112Demo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("张无忌");
        list.add("周芷若");
        list.add("赵敏");
        list.add("张强");
        list.add("张三丰");
        list.add("张三丰");
        // 把stream流转换成Set集合。
        Stream<String> list1 = list.stream().filter(s->s.startsWith("张"));
        Set<String> sets = list1.collect(Collectors.toSet());
        System.out.println(sets);

        // 把stream流转换成List集合。
        Stream<String> list2 = list.stream().filter(s->s.startsWith("张"));
        List<String> list3 = list2.collect(Collectors.toList());
        System.out.println(list3);

        // 把stream流转换成数组。
        Stream<String> list4 = list.stream().filter(s->s.startsWith("张"));
        String[] str = list4.toArray(String[]::new);
        System.out.println(Arrays.toString(str));
    }
}

File类

File类:代表操作系统的文件对象。
File类:是用来操作操作系统的文件对象的,删除文件,获取文件信息,创建文件(文件夹)...广义来说操作系统认为文件包含(文件和文件夹)
File类的创建文件对象的API:
         包:java.io.File
        (1)构造器:
            -- public File(String pathname):根据路径获取文件对象
            -- public File(String parent , String child):根据父路径和文件名称获取文件对象!
        File f = new File("绝对路径/相对路径");

相关API:

     - public String getAbsolutePath()  :返回此File的绝对路径名字符串。
     - public String getPath()  : 获取创建文件对象的时候用的路径
     - 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 mkdir() :创建由此File表示的目录。(只能创建一级目录)
     - public boolean mkdirs() :可以创建多级目录(建议使用的)
     - public String[] list():获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
     - public File[] listFiles()(常用):获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值