专业的编程技术博客社区

网站首页 > 博客文章 正文

Java学习:基础(不可变集合、Stream流)

baijin 2024-12-26 12:26:39 博客文章 8 ℃ 0 评论

不可变集合

  • 不可变集合就是不可以修改、添加、删除的集合
  • 集合的数据在创建的时候就提供,且在整个生命周期都不可变
  • 在List、Set、Map接口中,都存在of方法,可以创建一个不可变集合
import java.util.List;
import java.util.Map;
import java.util.Set;

public class CollectionDemo1 {
    public static void main(String[] args) {
        List<Double> l = List.of(100.0, 300.0, 248.6, 12.3);
        System.out.println(l);

        Set<String> s = Set.of("java", "php", "python");
        System.out.println(s);

        Map<String, Integer> m = Map.of("张三", 10, "李四", 20);
        System.out.println(m);
    }
}

Stream流

  • 用于简化集合和数组操作的API,结合Lambada表达式
  • 流中无法直接修改集合、数组中的数据
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CollectionDemo2 {
    public static void main(String[] args) {
        List<String> l = new ArrayList<>();
        Collections.addAll(l, "张三", "李四", "王五", "张二");
        System.out.println(l);

        l.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));
      
      // 收集Stream到集合或数组中,便于其他使用
        Stream<String> sl = l.stream().filter(s -> s.startsWith("张"));
        List<String> zhangList = sl.collect(Collectors.toList());
        System.out.println(zhangList);
    }
}
  • Stream流的三类方法

① 获取Stream流,创建一个流并把数据放入其中的,准备进行操作

② 中间方法,流上的操作,可以进行链式操作

③ 终结方法,一个流只有一个终结方法(forEach、count),是流上的最后一个操作方法,调用完成后就无法继续再使用

import java.util.*;
import java.util.stream.Stream;

public class CollectionDemo3 {
    public static void main(String[] args) {
        // Collection集合获取流
        Collection<String> list = new ArrayList<>();
        Stream<String> lStream = list.stream();

        // Map集合获取流
        Map<String, Integer> maps = new HashMap<>();
        // 键流
        Stream<String> keyStream = maps.keySet().stream();
        // 值流
        Stream<Integer> valStream = maps.values().stream();
        // 键值对流
        Stream<Map.Entry<String, Integer>> keyAndValStream = maps.entrySet().stream();

        // 数组获取流
        String[] names = {};
        // 方式1
        Stream<String> nameStream = Arrays.stream(names);
        // 方式2
        Stream<String> nameStream1 = Stream.of(names);
    }
}
  • Stream流常用API

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表