Java最新技术(JDK 11+) 及以上 Java 最新技术之集合框架实操应用详解

简介: 本示例基于Java最新技术(JDK 11+),涵盖集合框架的核心功能,结合Java 8+特性(如Stream API、Lambda表达式)与并发编程最佳实践。内容包括:List操作(初始化、Lambda过滤、Stream处理)、Map操作(流式过滤、ConcurrentHashMap原子操作、并行流)、Set操作(TreeSet排序、CopyOnWriteArraySet并发安全)、Queue/Deque操作(优先队列、双端队列)以及高级聚合操作(集合转换、分组统计、平均值计算)。[代码下载](https://pan.quark.cn/s/14fcf913bae6)

以下是基于Java最新技术(JDK 11+)的集合框架实操内容,结合了Java 8+的新特性(如Stream API、Lambda表达式)和并发编程的最佳实践。

import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class CollectionPractice {
   

    // 一、List操作示例
    public static void listOperations() {
   
        // 1. ArrayList的现代初始化和操作
        ArrayList<String> arrayList = new ArrayList<>(List.of("apple", "banana", "cherry"));
        arrayList.add("date");
        arrayList.removeIf(fruit -> fruit.startsWith("b")); // 使用Lambda过滤元素

        // 使用Stream API处理列表
        arrayList.stream()
                .map(String::toUpperCase)
                .forEach(System.out::println);

        // 2. LinkedList的双向操作
        LinkedList<Integer> linkedList = new LinkedList<>();
        linkedList.addFirst(100);
        linkedList.addLast(200);
        linkedList.push(50); // 等价于addFirst

        // 使用迭代器安全删除元素
        Iterator<Integer> iterator = linkedList.iterator();
        while (iterator.hasNext()) {
   
            if (iterator.next() == 100) {
   
                iterator.remove();
            }
        }
    }

    // 二、Map操作示例
    public static void mapOperations() {
   
        // 1. HashMap的流式操作
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("apple", 1);
        hashMap.put("banana", 2);
        hashMap.put("cherry", 3);

        // 计算所有值的总和
        int sum = hashMap.values().stream()
                .mapToInt(Integer::intValue)
                .sum();

        // 过滤键值对
        Map<String, Integer> filteredMap = hashMap.entrySet().stream()
                .filter(entry -> entry.getValue() > 1)
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        // 2. ConcurrentHashMap的原子操作
        ConcurrentHashMap<String, Integer> concurrentMap = new ConcurrentHashMap<>();
        concurrentMap.put("apple", 1);

        // 原子性更新操作
        concurrentMap.compute("apple", (k, v) -> v == null ? 1 : v + 1);
        concurrentMap.putIfAbsent("banana", 2);

        // 并行流处理
        concurrentMap.entrySet().parallelStream()
                .forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
    }

    // 三、Set操作示例
    public static void setOperations() {
   
        // 1. HashSet的流式操作
        HashSet<String> hashSet = new HashSet<>(Set.of("apple", "banana", "cherry"));
        hashSet.add("date");

        // 检查是否所有元素都满足条件
        boolean allStartWithA = hashSet.stream()
                .allMatch(fruit -> fruit.startsWith("a"));

        // 2. TreeSet的有序操作
        TreeSet<Integer> treeSet = new TreeSet<>(Comparator.reverseOrder());
        treeSet.addAll(Set.of(3, 1, 4, 1, 5, 9, 2, 6, 5));

        // 获取小于5的最大值
        Integer floorValue = treeSet.floor(5);

        // 3. CopyOnWriteArraySet的并发操作
        CopyOnWriteArraySet<String> concurrentSet = new CopyOnWriteArraySet<>();
        concurrentSet.add("apple");

        // 安全地遍历集合(迭代器创建时的快照)
        for (String element : concurrentSet) {
   
            concurrentSet.add(element.toUpperCase());
        }
    }

    // 四、Queue和Deque操作示例
    public static void queueOperations() {
   
        // 1. PriorityQueue的比较器使用
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();
        PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Comparator.reverseOrder());

        minHeap.addAll(List.of(5, 3, 7, 1));
        maxHeap.addAll(List.of(5, 3, 7, 1));

        System.out.println("Min heap peek: " + minHeap.peek()); // 输出1
        System.out.println("Max heap peek: " + maxHeap.peek()); // 输出7

        // 2. ArrayDeque的双端队列操作
        ArrayDeque<String> deque = new ArrayDeque<>();
        deque.offerFirst("head");
        deque.offerLast("tail");
        deque.pollFirst();
        deque.pollLast();
    }

    // 五、集合转换和聚合操作
    public static void advancedOperations() {
   
        // 1. 集合间的转换
        List<String> list = Arrays.asList("apple", "banana", "cherry");
        Set<String> set = new LinkedHashSet<>(list);
        Map<Integer, String> map = IntStream.range(0, list.size())
                .boxed()
                .collect(Collectors.toMap(
                        i -> i,
                        list::get,
                        (existing, replacement) -> existing,
                        LinkedHashMap::new
                ));

        // 2. 复杂聚合操作
        List<Person> persons = Arrays.asList(
                new Person("Alice", 25),
                new Person("Bob", 20),
                new Person("Charlie", 30)
        );

        // 按条件分组
        Map<String, List<Person>> ageGroup = persons.stream()
                .collect(Collectors.groupingBy(p -> p.getAge() > 25 ? "Old" : "Young"));

        // 计算平均年龄
        double averageAge = persons.stream()
                .mapToInt(Person::getAge)
                .average()
                .orElse(0);
    }

    // 示例类
    static class Person {
   
        private final String name;
        private final int age;

        public Person(String name, int age) {
   
            this.name = name;
            this.age = age;
        }

        public String getName() {
   
            return name;
        }

        public int getAge() {
   
            return age;
        }
    }

    public static void main(String[] args) {
   
        listOperations();
        mapOperations();
        setOperations();
        queueOperations();
        advancedOperations();
    }
}

代码说明:

  1. List操作

    • 使用Java 9的List.of()工厂方法初始化不可变列表
    • 演示removeIf()方法和Lambda表达式的结合使用
    • 展示Stream API的链式操作和方法引用
  2. Map操作

    • 展示HashMap的流式处理和过滤操作
    • 演示ConcurrentHashMap的原子性操作(compute()putIfAbsent()
    • 使用并行流处理并发Map
  3. Set操作

    • 演示TreeSet的比较器使用(降序排列)
    • 使用CopyOnWriteArraySet进行线程安全的并发操作
    • 展示集合的流式匹配操作(allMatch()
  4. Queue和Deque操作

    • 实现优先队列(最小堆和最大堆)
    • 使用ArrayDeque作为双端队列进行首尾操作
  5. 高级操作

    • 集合间的相互转换(List→Set→Map)
    • 使用Collectors进行复杂聚合操作(分组、平均值计算)
    • 演示Java 8的IntStream和装箱操作

这些示例覆盖了Java集合框架的核心功能,并结合了Java 8+的新特性,展示了现代Java编程的最佳实践。


J



代码获取方式
https://pan.quark.cn/s/14fcf913bae6


相关文章
|
1月前
|
人工智能 算法 Java
Java与AI驱动区块链:构建智能合约与去中心化AI应用
区块链技术和人工智能的融合正在开创去中心化智能应用的新纪元。本文深入探讨如何使用Java构建AI驱动的区块链应用,涵盖智能合约开发、去中心化AI模型训练与推理、数据隐私保护以及通证经济激励等核心主题。我们将完整展示从区块链基础集成、智能合约编写、AI模型上链到去中心化应用(DApp)开发的全流程,为构建下一代可信、透明的智能去中心化系统提供完整技术方案。
223 3
|
2月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
353 1
|
2月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
235 100
|
2月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
266 101
|
1月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
1月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
1月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
118 8
|
1月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
72 7
|
2月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
444 12
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。

热门文章

最新文章