java.util详细讲解和应用

news2024/11/22 18:55:53

文章目录

    • java.util核心组件
      • 1. 集合框架(Collection Framework)
      • 2. 日期时间API(java.time包)
      • 3. Random 类
      • 4. Scanner 类
      • 5. Arrays 类
      • 6. Collections 类
      • 应用实例
        • ArrayList 示例
        • LocalDate 示例
        • Random 示例
      • 7. Iterator(迭代器)
      • 8. Comparator 和 Comparable
      • 9. Queue(队列)
      • 10. Stack(栈)
      • 11. HashMap 和 TreeMap 的选择
      • 12. Set 的选择
      • 小结

java.util核心组件

java.util包是Java标准库中的一个重要组成部分,提供了大量的工具类和集合框架,用于支持数据结构、算法、日期时间处理、国际化、随机数生成等功能。以下是一些核心组件的详细讲解及应用示例:

1. 集合框架(Collection Framework)

  • 功能:提供了一套设计良好的接口和实现,如List, Set, Queue, Map等,用于存储和操作对象集合。
  • 应用
    • ArrayList:动态数组,适合随机访问元素。
    • LinkedList:双向链表,适合插入删除操作。
    • HashSet:无序且不重复的集合,基于哈希表实现。
    • HashMap:键值对映射,基于哈希表实现。
    • TreeSet:有序且不重复的集合,基于红黑树实现,自然排序或自定义比较器。
    • TreeMap:有序的键值对映射,基于红黑树实现。

2. 日期时间API(java.time包)

  • 功能:Java 8后引入的新日期时间API,提供更丰富、直观且线程安全的日期时间操作类,如LocalDate, LocalTime, LocalDateTime, Duration, Period等。
  • 应用
    • LocalDate:只包含日期部分,例如:LocalDate today = LocalDate.now();
    • LocalTime:只包含时间部分。
    • LocalDateTime:包含日期和时间。
    • Duration:用于计算两个时间点之间的时间间隔。
    • Period:用于计算两个日期之间的天数、月数、年数。

3. Random 类

  • 功能:生成随机数。
  • 应用:模拟、游戏开发、加密算法等需要随机性的场景。

4. Scanner 类

  • 功能:解析输入文本,方便地从不同类型的输入流中读取数据。
  • 应用:读取控制台输入、处理文件数据等。

5. Arrays 类

  • 功能:提供了对数组操作的便捷方法,如排序、搜索、复制等。
  • 应用:数组排序:Arrays.sort(array);

6. Collections 类

  • 功能:提供了一系列静态方法来操作集合,如排序、查找最大最小值、填充、反转等。
  • 应用:集合排序:Collections.sort(list);

应用实例

ArrayList 示例
import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
        System.out.println("列表内容: " + names);
        names.remove("Bob");
        System.out.println("移除Bob后的列表: " + names);
    }
}
LocalDate 示例
import java.time.LocalDate;

public class LocalDateExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("今天的日期: " + today);
        LocalDate tomorrow = today.plusDays(1);
        System.out.println("明天的日期: " + tomorrow);
    }
}
Random 示例
import java.util.Random;

public class RandomExample {
    public static void main(String[] args) {
        Random rand = new Random();
        int randomNumber = rand.nextInt(100);
        System.out.println("随机数: " + randomNumber);
    }
}

通过这些示例,我们可以看到java.util包提供了强大的工具来处理数据结构、日期时间、随机数生成等,是Java程序开发不可或缺的一部分。

7. Iterator(迭代器)

  • 功能:Iterator 接口提供了遍历任何 Collection 的统一方式。它允许逐个访问集合中的元素,而无需知道集合底层的实现。
  • 应用
    List<String> list = new ArrayList<>();
    list.add("Apple");
    list.add("Banana");
    list.add("Cherry");
    
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
        String fruit = iterator.next();
        System.out.println(fruit);
    }
    

8. Comparator 和 Comparable

  • Comparable:接口用于定义对象的自然排序顺序。一个类实现了Comparable接口就可以直接通过Collections.sort()或Arrays.sort()进行排序。

  • Comparator:接口用于在排序时自定义比较逻辑,可以作为参数传递给排序方法,提供灵活的比较方式。

    // 使用Comparable
    class Person implements Comparable<Person> {
        String name;
        int age;
        
        // 省略构造函数和其他方法
        
        @Override
        public int compareTo(Person other) {
            return Integer.compare(this.age, other.age);
        }
    }
    
    // 使用Comparator
    Collections.sort(personList, new Comparator<Person>() {
        @Override
        public int compare(Person p1, Person p2) {
            return p1.name.compareTo(p2.name);
        }
    });
    

9. Queue(队列)

  • 功能:Queue接口代表一种先进先出(FIFO)的数据结构。常见的实现有LinkedList, PriorityQueue等。
  • 应用
    Queue<String> queue = new LinkedList<>();
    queue.add("First Task");
    queue.add("Second Task");
    System.out.println(queue.poll()); // 输出并移除队首元素
    

10. Stack(栈)

虽然java.util.Stack类实际上是基于Vector实现的,并不推荐直接使用,但理解栈的概念很重要。栈是一种后进先出(LIFO)的数据结构,可以用Deque接口的实现类如ArrayDeque来替代实现栈功能。

11. HashMap 和 TreeMap 的选择

  • HashMap:适用于大多数需要快速插入、删除和查找的场景,它不是线程安全的,但在单线程或同步控制下性能优秀。
  • TreeMap:当需要保持键的自然顺序或自定义顺序时使用,同时它还提供了范围查询的能力,但相比HashMap,它的插入、删除和查找操作较慢。

12. Set 的选择

  • HashSet:无序、不允许重复,适用于快速查找。
  • LinkedHashSet:保持插入顺序,不允许重复。
  • TreeSet:排序、不允许重复,适合需要排序或范围查询的场景。

小结

java.util包提供了极其丰富的工具,涵盖了数据结构、算法、日期时间处理等多个方面,是Java开发者日常编程不可或缺的基础。掌握这些工具不仅能够提高代码质量,还能提升开发效率。通过不断地实践和探索,你可以更深入地理解这些工具的精髓,从而在实际项目中更加游刃有余。

😍😍 大量H5小游戏、微信小游戏、抖音小游戏源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1648320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用sqlmodel实现唯一性校验2,插入之前检查是否已存在

虽然之前添加唯一性校验的方法能够解决数据唯一的问题&#xff0c;但是如果忘了处理异常&#xff0c;则可能会导致程序崩溃。 在此基础上&#xff0c;我们可以在插入数据之前检查该数据是否已存在。 原来的代码&#xff1a; from sqlmodel import Field, Session, SQLModel,…

# Maven 下载安装与配置

Maven 下载安装与配置 一、前言&#xff1a; 1、Maven 简介&#xff1a; Apache Maven是一个&#xff08; 特别是 Java 编程 &#xff09;项目管理及自动构建工具&#xff0c;由 Apache 软件基金会所提供。基于项目对象模型&#xff08; 缩写&#xff1a;POM &#xff09;概念…

【Pytorch】4.torchvision.datasets的使用

什么是torchvision.datasets、 是pytorch官方给出的关于cv领域的训练数据集&#xff0c;我们可以用官方提供的数据集进行学习与训练 如何查看 我们可以进入Pytorch官网 切换一下版本到v0.9.0&#xff0c;就可以看到官方给出的数据集了 同时也有官方训练好的cv模型可以供我们…

华为手机怎么录屏?3个简单方法教会你

随着智能手机的普及&#xff0c;录屏功能已成为许多用户日常操作中的必备工具。华为手机作为市场上的热门品牌&#xff0c;为用户提供了多种录屏方法&#xff0c;以满足不同场景和需求。 那么华为手机怎么录屏&#xff1f;本文将详细介绍3个华为手机的几种录屏方法&#xff0c…

容器Docker:轻量级虚拟化技术解析

引言 随着云计算和虚拟化技术的飞速发展&#xff0c;容器技术以其轻量级、高效、可移植的特性&#xff0c;逐渐成为了软件开发和部署的新宠。在众多容器技术中&#xff0c;Docker以其简单易用、功能强大的特点&#xff0c;赢得了广泛的关注和应用。本文将全面介绍Docker的基本概…

普通组件的注册-局部注册和全局注册

目录 一、局部注册和全局注册-概述 二、局部注册的使用示例 三、全局注册的使用示例 一、局部注册和全局注册-概述 组件注册有两种方式&#xff1a; 局部注册&#xff1a;只能在注册的组件内使用。使用方法&#xff1a;创建.vue文件&#xff0c;在使用的组件内导入并注册。…

浅谈智能电气火灾监控系统的设计及应用

摘要&#xff1a;致电气火灾的原因是多方面的&#xff0c;主要成因包括漏电、绝缘层老化、短路、电火花密集、接地发生故障、电气设备自然、接触不良和电流超负荷等。文章分析电气火灾的成因&#xff0c;并探索电气火灾监控系统的设计方案与注意事项。 关键词&#xff1a;电气…

揭秘APP广告变现:从零到月入过万的秘密

在移动互联网的时代&#xff0c;APP的开发和运营成为了一个热门的行业。然而&#xff0c;对于许多开发者来说&#xff0c;如何通过APP广告变现&#xff0c;实现收益最大化&#xff0c;是一个值得深思的问题。今天&#xff0c;就让我们通过一个小故事&#xff0c;一起来探讨一下…

助贷客户管理系统:助力助贷公司轻松实现30%增长目标!

为了解决传统助贷公司在业务过程中遇到的痛点&#xff0c;盛鑫优创科技特别设计了一款定制化的解决方案——"鑫鹿助贷客户管理系统"&#xff0c;以满足助贷行业的独特需求&#xff1a; 传统助贷公司的老板们在做业务的的过程中都有这些痛点&#xff1a; 1、没有一个…

25_Scala集合Tuple

文章目录 tuple1.元组定义2.Tuple元素访问3.如果元素的len2&#xff0c;称之为键值对对象&#xff0c;也称之为对偶元组4.补充上节Map5.Map集合遍历6.集合之间相互转化 tuple 概念&#xff1a;scala语言采用特殊的方式将无关的数据作为一个整体&#xff0c;组合在一起’ 1.元…

综合性SCI期刊,中科院3区,IF=4+,征稿范围广泛!

一、期刊名称 Scientific Reports 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;综合性期刊 影响因子&#xff1a;4.6 中科院分区&#xff1a;3区 出版方式&#xff1a;开放出版 版面费&#xff1a;$2590 三、期刊征稿范围 期刊发表来自自然科学、心…

EXCEL——VLOOKUP函数

一、VLOOKUP函数的语法 VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup]) lookup_value 需要在数据表首列进行搜索的值&#xff0c;可以是数值&#xff0c;引用或字符串 table_array 要在其中搜索数据的文字、数字或逻辑值表&#xff0c;可以是对区域或…

Day 41 343.整数拆分 96.不同的二叉搜索树

整数拆分 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2输出: 1解释: 2 1 1, 1 1 1。 示例 2: 输入: 10输出: 36解释: 10 3 3 4, 3 3 4 36。说明: 你可以假设 …

Vue3工程化配置

Vue3工程化配置 目录 Vue3工程化配置创建项目vue-clivite(推荐) 快速体验2和3的差别vue3vue2 ref和reactive 创建项目 vue-cli 具体环境配置请点这里 记得新建配置时这里选vue3 vite(推荐) 注&#xff1a;Vite 需要 Node.js 版本 18&#xff0c;20 1.选定路径后再cmd输入创建…

深度学习之基于Resnet50卷积神经网络脊柱骨折CT影像图片诊断系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 脊柱骨折是骨科中一种常见的损伤类型&#xff0c;准确的诊断对于患者的治疗和康复至关重要。传统的脊…

SPD1179 电路设计---汽车电机控制设计

概述 SPD1179 是旋智针对汽车应用推出的一颗高度集成的片上系统&#xff08;SOC&#xff09; 微控制器&#xff0c;内置 32 位高性能 ARMCortex-M4F 内核&#xff0c;最高 100MHz 的软件可编程时钟频率&#xff0c; 32KB SRAM&#xff0c; 128KB 嵌入式 FLASH&#xff0c; 1KB …

高级DBA教你达梦8国产数据库MergeInto批量插入并忽略主键重复报错特殊用法(达梦官方手册没有的内容)

高级DBA教你达梦8国产数据库MergeInto批量插入并忽略主键重复报错特殊用法&#xff08;达梦官方手册没有的内容&#xff09; 一、达梦8国产数据库简介 达梦 8 是一款由武汉达梦数据库有限公司基于 C/C语言开发的国产关系型数据库&#xff0c;有支持 X86 和 ARM 平台的版本&am…

【数据结构】 顺序表专题

目录 1.顺序表的概念及结构 1.1线性表 1.2顺序表 2.顺序表的分类 2.1静态顺序表 2.2动态顺序表 1.顺序表的概念及结构 1.1线性表 线性表&#xff08;Linear List&#xff09;是数据结构中的一种基本结构&#xff0c;它是一个具有n个数据元素的有限序列。线性表的特点是数…

triton之fused attention

附录 【BBuf的CUDA笔记】十五,OpenAI Triton入门笔记三 FusedAttention - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/684557290图解大模型计算加速系列:FlashAttention V1,从硬件到计算逻辑 - 知乎 (zhihu.com)

MongoDB(四):条件操作符

条件操作 1、概述2、比较操作2.1、大于操作符-$gt2.2、大于等于操作符-$gte2.3、小于——$lt2.4、小于等于——$lte2.5、范围查询 3、总结 大家好&#xff0c;我是欧阳方超&#xff0c;可以扫描下方二维码关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 1、…