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


相关文章
|
22天前
|
自然语言处理 前端开发 Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
125 5
|
20天前
|
算法 Java API
2025 版 Java 零基础入门到精通实操指南
这篇文章为零基础学习者提供了Java入门的全面指南。首先介绍了Java的特点和用途,然后详细讲解了环境搭建步骤(JDK安装、环境变量配置和IDE选择),并以&quot;Hello World&quot;程序为例演示了开发流程。文章还系统性地讲解了Java核心语法,包括变量与数据类型、运算符、控制流语句、数组和方法等基础知识,以及面向对象编程和异常处理的概念。通过代码示例帮助读者理解和实践,最后建议掌握基础后可进一步学习Java高级特性和框架。文中还提供了代码获取方式和关注入口,适合Java初学者系统学习。
399 2
|
23天前
|
资源调度 安全 Java
Java 大数据在智能教育在线实验室设备管理与实验资源优化配置中的应用实践
本文探讨Java大数据技术在智能教育在线实验室设备管理与资源优化中的应用。通过统一接入异构设备、构建四层实时处理管道及安全防护双体系,显著提升设备利用率与实验效率。某“双一流”高校实践显示,设备利用率从41%升至89%,等待时间缩短78%。该方案降低管理成本,为教育数字化转型提供技术支持。
45 0
|
22天前
|
消息中间件 机器学习/深度学习 Java
java 最新技术驱动的智能教育在线实验室设备管理与实验资源优化实操指南
这是一份基于最新技术的智能教育在线实验室设备管理与实验资源优化的实操指南,涵盖系统搭建、核心功能实现及优化策略。采用Flink实时处理、Kafka消息队列、Elasticsearch搜索分析和Redis缓存等技术栈,结合强化学习动态优化资源调度。指南详细描述了开发环境准备、基础组件部署、数据采集与处理、模型训练、API服务集成及性能调优步骤,支持高并发设备接入与低延迟处理,满足教育机构数字化转型需求。代码已提供下载链接,助力快速构建智能化实验室管理系统。
87 44
|
22天前
|
缓存 监控 NoSQL
Redis 实操要点:Java 最新技术栈的实战解析
本文介绍了基于Spring Boot 3、Redis 7和Lettuce客户端的Redis高级应用实践。内容包括:1)现代Java项目集成Redis的配置方法;2)使用Redisson实现分布式可重入锁与公平锁;3)缓存模式解决方案,包括布隆过滤器防穿透和随机过期时间防雪崩;4)Redis数据结构的高级应用,如HyperLogLog统计UV和GeoHash处理地理位置。文章提供了详细的代码示例,涵盖Redis在分布式系统中的核心应用场景,特别适合需要处理高并发、分布式锁等问题的开发场景。
124 38
|
21天前
|
安全 Java API
Java 抽象类与接口在 Java17 + 开发中的现代应用实践解析
《Java抽象类与接口核心技术解析》 摘要:本文全面剖析Java抽象类与接口的核心概念与技术差异。抽象类通过模板设计实现代码复用,支持具体方法与状态管理;接口则定义行为规范,实现多态支持。文章详细对比了两者在实例化、方法实现、继承机制等方面的区别,并提供了模板方法模式(抽象类)和策略模式(接口)的典型应用示例。特别指出Java8+新特性为接口带来的灵活性提升,包括默认方法和静态方法。最后给出最佳实践建议:优先使用接口定义行为规范,通过抽象类实现代码复用,合理组合两者构建灵活架构。
33 2
|
SQL Java 数据库连接
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
143 1
|
算法 Java 程序员
论文翻译 | 【深入挖掘Java技术】「底层原理专题」深入分析一下并发编程之父Doug Lea的纽约州立大学的ForkJoin框架的本质和原理
本文深入探讨了一个Java框架的设计、实现及其性能。该框架遵循并行编程的理念,通过递归方式将问题分解为多个子任务,并利用工作窃取技术进行并行处理。所有子任务完成后,其结果被整合以形成完整的并行程序。 在总体设计上,该框架借鉴了Cilk工作窃取框架的核心理念。其核心技术主要聚焦于高效的任务队列构建和管理,以及工作线程的管理。经过实际性能测试,我们发现大多数程序的并行加速效果显著,但仍有优化空间,未来可能需要进一步研究改进方案。
140 3
论文翻译 | 【深入挖掘Java技术】「底层原理专题」深入分析一下并发编程之父Doug Lea的纽约州立大学的ForkJoin框架的本质和原理
|
存储 设计模式 算法
Java从入门到精通:2.1.1深入学习Java核心技术——掌握Java集合框架
Java从入门到精通:2.1.1深入学习Java核心技术——掌握Java集合框架
101 0