Java入门:掌握集合与Stream流的基础知识

发表时间: 2024-05-25 17:58

不可变集合

  • 不可变集合就是不可以修改、添加、删除的集合
  • 集合的数据在创建的时候就提供,且在整个生命周期都不可变
  • 在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

Stream流常用API配图说明