Java工具包类

news2024/11/20 14:17:30

java.util包有很多实用的类、接口和异常。

向量类,堆栈类,哈希表,枚举接口,日历类,随机函数类,映射接口和属性类。

Vector类

vector是异构的,可以存储不同的对象,同时可以动态增加存储容量

所有向量操作都是针对Object类进行的,要将从向量空间取回的Object对象进行向下转型。

元素个数小于等于容量。

只能放进对象,基本数据类型要使用其包装类。

常用方法

方法说明
Vector()构造空向量
Vector(int initialCapacity)初始化指定大小的向量
Vector(int initialCapacity,int capacityIncrement)capacityIncrement 每次扩充的值: 0 每次扩充一倍
add()添加元素
addElement()添加到末尾
capacity()返回容量大小
clear()清空
elementAt()返回指定位置的对象元素
elements()返回允许访问的每个向量元素的对象
firstElement()返回第一个对象元素
get()返回指定位置的对象元素
indexOf()查找指定对象元素的位置, 不存在返回-1
isEmpty()判断是否为空
remove()清除指定位置或者对象的元素
removeAllElements()清除所有元素
setElementAt()在指定位置设置指定的对象元素,覆盖原来的
setSize()设置容量大小
size()返回元素个数
trimToSize()设置实际容量为内部的缓存容量
toArray()返回向量元素数组
subList()返回向量位置
removeElementAt()删除index所指的地方的对象

例子

import java.util.Vector;

public class VectorDemo {
    public void test(){
        Vector vectTemp = new Vector(4,3);
        System.out.println("元素个数: " + vectTemp.size());
        System.out.println("容量大小: " + vectTemp.capacity());
        // 添加元素
        vectTemp.add(new Integer(3));
        vectTemp.addElement(new Double(4.0));
        vectTemp.insertElementAt(new Float(5.0f),1);
        vectTemp.add("hello world");
        vectTemp.add("wkk");
        System.out.println("元素个数: " + vectTemp.size());
        System.out.println("容量大小: " + vectTemp.capacity());
        // toString() 会将所有元素按照字符串输出
        System.out.println(vectTemp.toString());
        // 第2个元素
        System.out.println(vectTemp.get(2));
    }

    public static void main(String[] args) {
        new VectorDemo().test();
    }
}

Stack类

后进先出: LIFO

可以接收任何类型对象

常用方法

方法说明
Stack()构造空堆栈
empty()判断是否为空
peek()取得堆栈顶端的元素
pop()删除堆栈顶端的元素,并返回
push(Object item)入栈
search(Object item)检查堆栈中中是否有指定的对象

例子

import java.util.Stack;
public class StackDemo {
    public void test(){
        Stack stkTemp = new Stack();
        System.out.println("堆栈是否为空: "+stkTemp.empty());
        stkTemp.push(new Integer(2));
        stkTemp.push("wkk");
        // 查看元素位置
        System.out.println("元素wkk位置:" + stkTemp.search("wkk"));
        System.out.println("元素2位置:" + stkTemp.search(new Integer(2)));
        // 栈顶元素 peek
        System.out.println(stkTemp.peek());
        System.out.println(stkTemp.peek());
        //栈顶元素 pop
        System.out.println(stkTemp.pop());
        System.out.println(stkTemp.pop());
    }

    public static void main(String[] args) {
        new StackDemo().test();
    }
}

  • 栈顶元素所处位置为 1
  • 栈顶的下一个元素的位置为 2

Hashtable类

Dictionary类是一个抽象类,为字典表提供了一个统一的接口。

Hashtable 是一个键值对集合, 是抽象类Dictionary的一个具体实现,可以存储任意对象。

常用方法

方法说明
Hashtable()构造空的哈希表
clear()清空
containsKey()对象是否是表中的关键字
containsValue()对象是否是表中的值
elements()返回允许访问每个对象元素的对象
get()根据指定的键返回其对应的值
put(Object key, Object value)将一组键值对放进表中
keys()返回允许访问每一个键的对象
size()键的个数
remove()依据指定的键删除对应的键值对

每一个键唯一对应一个键值对,一个哈希表中的键不能重复

任何一个对象可以充当键,任何一个对象也可以充当值。

例子

import java.util.Hashtable;
public class HashtableDemo {
    public void test(){
        Hashtable hshTemp = new Hashtable();
        hshTemp.put("001",new Integer(1));
        hshTemp.put("002",new Integer(2));

        // 元素个数
        System.out.println("元素个数: " + hshTemp.size());
        // 获取值
        System.out.println(hshTemp.get("001"));
        // 判断是否有值 1
        System.out.println("有值1: " + hshTemp.containsValue(new Integer(1)));
        // 哈希表转换为String
        System.out.println(hshTemp);
    }

    public static void main(String[] args) {
        new HashtableDemo().test();
    }
}

Enumeration接口

Enumeration对应着一个对象集合,一般是和Vector, Stack, Hashtable或者其他类共同实现完成。

使用它们的elements()方法来得到元素集合。

iterator 迭代器

常用方法:

方法说明
hasMoreElements()判断对象是否有多的元素
nextElement()获得对象集合的下一个对象

例子

import java.util.Vector;
import java.util.Enumeration;

public class EnumerationDemo {
    public void test(){
        Vector vctTemp = new Vector(3,2);
        Enumeration enumTemp ;
        // 添加字符串
        for(int intTemp = 1;intTemp < 4;intTemp++){
            String string = "字符串" + intTemp;
            vctTemp.addElement(string);
        }

        enumTemp = vctTemp.elements();
        while(enumTemp.hasMoreElements()){
            String  strElement = (String)enumTemp.nextElement();
            System.out.println("元素值: " + strElement);
        }
    }

    public static void main(String[] args) {
        new EnumerationDemo().test();
    }
}

Enumeration 是一个接口,所以不能使用new() 方法来定义一个实例

Calendar类

工作原理,从本机电脑系统中取得系统时间、所处时区等数据来得到时间的具体信息。

常用属性

属性说明
YEAR
MONTH
DAY_OF_MONTH当月的第几天
DAY_OF_WEEK当星期的第几天
DAY_OF_YEAR当前的第几天
WEEK_OF_YEAR当年的第几周
Calendar()构造函数,但是是protected的,不能直接new
getInstance()获得日历类的实例
get(int field)获得某一属性的值,field为日历中定义的属性
set(int field)设置某一属性的值
getTime()返回日历所对应的日期(date)
Clear(int field)清除日历类的某一个属性的值

例子

import java.util.Calendar;

public class CalendarDemo {
    public void test(){
        Calendar cldTemp = Calendar.getInstance();
        // 打印基本的日历信息
        System.out.println("年:" + cldTemp.get(Calendar.YEAR));
        System.out.println("月: " + cldTemp.get(Calendar.MONTH));
        System.out.println("日: " + cldTemp.get(Calendar.DATE));
        // 具体日历信息
        System.out.println("上/下午: " + cldTemp.get(Calendar.AM_PM));
        System.out.println("小时: " + cldTemp.get(Calendar.HOUR));
        System.out.println("分钟: " + cldTemp.get(Calendar.MINUTE));
        System.out.println("秒: " + cldTemp.get(Calendar.SECOND));
        System.out.println("毫秒: " + cldTemp.get(Calendar.MILLISECOND));
        // 转换为数组
        System.out.println("数组: " + cldTemp.toString());
    }

    public static void main(String[] args) {
        new CalendarDemo().test();
    }
}

  • 整个日历是由一个数组存放的
  • 日历类的构造函数是protected的,所以不能直接用new创建,而是用getInstance()获得

Random类

Random类是伪随机数生成器。

常用方法

方法说明
Random构造方法
nextBoolean()返回一个boolean变量 true / false
nextDouble()返回一个double数 0.0 - 1.0
nextFloat()0.0 - 1.0
nextInt()
nextLong()
nextGaussian()根据一个伪离散高斯分布生成一个双精度随机数 0.0 - 1.0

例子

import java.util.Random;

public class RandomDemo {
    public void test() {
        Random rndTemp = new Random();
        System.out.println("布尔: " + rndTemp.nextBoolean());
        System.out.println("double: " + rndTemp.nextDouble());
        System.out.println("float: "+ rndTemp.nextFloat());
        System.out.println("long: " + rndTemp.nextLong());
        System.out.println("int: " + rndTemp.nextInt());
        // 10以内整型
        System.out.println("int(10以内): " +rndTemp.nextInt(10));
    }

    public static void main(String[] args) {
        new RandomDemo().test();
    }
}

  • nextInt(n) 返回[0, n) 的整数 -> n>0

Map接口

Map(映射)接口定义了一个框架,用来实现基本的映射数据结构。

Hashtable类实现了Map接口。

Map接口定义了在索引的基础上存储和检索信息的方法,Map接口中的键可以是任何类型。

常用方法:

基本都是针对键和键对应的对象

方法说明
clear()清除所有
containsKey()是否有指定的键
containsValue()是否有指定的值
entrySet()返回映射对象所对应的集合
hashCode()返回映射对象本身的哈希码
isEmpty()是否为空
keySet()返回键的集合
put()添加键值对
putAll(Map t)将已知的映射t中的所有映射添加到本映射中
remove()根据键删除映射
size()返回映射个数
values()返回值的集合

Map是一个接口,需要实现。

HashMap类实现了Map接口。

例子

import java.util.HashMap;
import java.util.Set;
import java.awt.Rectangle;

public class HashMapDemo {
    public void test(){
        HashMap hmTemp = new HashMap();
        // 构造数组,预存放键对象
        Object objectKeyTemp [] = new Object[3];
        hmTemp.put("small",new Rectangle(0,0,5,5));
        hmTemp.put("midium",new Rectangle(0,0,15,15));
        hmTemp.put("large",new Rectangle(0,0,30,30));
        // 个数
        System.out.println("个数: " + hmTemp.size());
        // 是否含有键small
        System.out.println("是否含有small键: " + hmTemp.containsKey("small"));
        System.out.println("是否含有Rectangle(0,0,15,15): "+hmTemp.containsValue(new Rectangle(0,0,15,15)));
        // 返回映射中键的集合
        Set setTemp = hmTemp.keySet();
        objectKeyTemp = setTemp.toArray();
        for (int i = 0; i < objectKeyTemp.length; i++) {
            if(objectKeyTemp[i] instanceof String) {
                String s = (String) objectKeyTemp[i];
                System.out.println("key的值: " + s);
            }
        }
    }

    public static void main(String[] args) {
        new HashMapDemo().test();
    }
}

Properties类

主要用于读取Java的配置文件

在Java中,其配置文件常为.properties文件,是以键值对的形式进行参数配置的。

Properties类是Hashtable类的子类,有Hashtable类对象的所有方法

常用方法

方法说明
getProperty()依据指定的键或者值返回属性值
load(InputStream inStream)从指定的输入流中读取键和其指定对象进行加载
propertyNames()将属性对象中的键返回到枚举接口
setProperty(String key,String value)设定属性对象中的一组属性对象对,其中键和值都是String类型
store(OutputStream out,String header)将属性对象中的属性对象加载到指定的输出流中,同时指定名字

例子

配置文件: file.properites

age = 25
name = wkk

package com.wkk;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Enumeration;
import java.util.Properties;
import java.io.IOException;
public class PropertiesDemo {
    public void test(){
        Properties ppTemp = new Properties();
        try{
            ppTemp.load(new FileInputStream("src/com/wkk/file.properties"));
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }
        Enumeration content = ppTemp.propertyNames();
        while(content.hasMoreElements()){
            String key = (String)content.nextElement();
            String value =ppTemp.getProperty(key);
            System.out.println(key + ":" + value);
        }
    }

    public static void main(String[] args) {
        new PropertiesDemo().test();
    }
}

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

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

相关文章

【工具】国内苹果市场已上架 新一代社交产品 damus

国内苹果市场可下载 2月1日&#xff0c;Twitter 联合创始人 Jack Dorsey 发布推文表示&#xff0c;基于分布式社交媒体协议 Nostr 的社交产品 Damus 和 Amethyst 正式在苹果 App Store 和谷歌 Google Play Store 上线。 目前为止&#xff0c;Damus 在国内苹果应用市场是可以直…

远程超大功率森林防火喊话与应急广播系统方案

北京恒星科通发布于2023-2-2 一、引言 随着消灭宜林荒山和实现全面绿化&#xff0c;造林事业不断发展&#xff0c;林地面积、林业蓄积量逐年增加&#xff0c;如何加强森林防火、保护环境&#xff0c;是全国当前面临的一项重大任务。 森林火灾是一种突发性和破坏性极强的自然…

Spring Security(新版本)实现权限认证与授权

学习新版SpringSecurity详细配置一、Spring Security介绍1、Spring Security简介2、历史3、同款产品对比3.1、Spring Security3.2、 Shiro二、Spring Security实现权限1、SpringSecurity入门1.1 添加依赖1.2、启动项目测试2、用户认证2.1、用户认证核心组件2.2、用户认证2.2.1、…

CrossOver虚拟机软件2023最新版Mac运行切换Windows

CrossOver2023版是专为苹果电脑用户打造的一款实用工具&#xff0c;这款工具主要方便用户在mac上运行windows系列的应用程序&#xff0c;用户不需要安装虚拟机就可以实现各种应用程序的直接应用&#xff0c;并且可以实现无缝集成&#xff0c;实现跨平台的复制粘贴和文件互通等&…

我为什么抢不到票?!全国最难抢线路揭晓

随着疫情防控策略的转变&#xff0c;不少多年未归的朋友选择在今年返乡团聚。那么2023年春运抢票难度是否会因此而飙升&#xff1f;本期文章&#xff0c;我们通过数据分析&#xff0c;观察比较哪条线路的票最难抢&#xff0c;给还没有买到票的朋友提供参考。 根据往年央视报道和…

浅析晶体管放大电路的负载线

晶体管放大电路的负载线包括直流负载线和交流负载线&#xff0c;描述了输出端电压、电流与负载之间的关系。大学期间曾经学习过相关知识&#xff0c;本文将与大家重温所学内容&#xff0c;并介绍直流工作点对功率放大器性能的影响。 直流负载线 以场效应管为例&#xff0c;图…

基于python3实现Azure机器学习最接近人声的文本转语音功能

上期文章,我们介绍了如何使用Azure来创建一个语音服务API,哪里,我们得到了API的key,以及语音服务的基本信息,包含地区等,这些都是本期代码需要的参数 听了那么多AI合成的语音,Azure机器学习的文本转语音最接近人声https://blog.csdn.net/weixin_44782294/article/detai…

如何实现大文件上传:秒传、断点续传、分片上传

前言 文件上传是一个老生常谈的话题了&#xff0c;在文件相对比较小的情况下&#xff0c;可以直接把文件转化为字节流上传到服务器&#xff0c;但在文件比较大的情况下&#xff0c;用普通的方式进行上传&#xff0c;这可不是一个好的办法&#xff0c;毕竟很少有人会忍受&#…

在字节跳动干了5年的软件测试,2月无情被辞,想给划水的兄弟提个醒

前几天&#xff0c;一个认识了好几年在大厂工作做软件测试的朋友&#xff0c;年近30了&#xff0c;却被大厂以“人员优化”的名义无情被辞&#xff0c;据他说&#xff0c;有一个月散伙饭都吃了好几顿…… 在很多企业&#xff0c;都有KPI考核&#xff0c;然后在此基础上还会弄个…

Ubuntu设置静态IP

Ubuntu设置静态IP1.当前环境2. 设置前准备3.前提准备4.修改VMware中的网络配置5.修改Ubuntu配置文件6.查看网关信息7.Xshell远程连接1.当前环境 VMware16、Xshell7 2. 设置前准备 VMware16设置快照&#xff0c;配置出错可以返回到初始状态 3.前提准备 查看Ubuntu是否安装vi…

小程序项目学习--第七章:播放页布局-歌曲进度控制-歌词的展示

第七章&#xff1a;播放页布局-歌曲进度控制-歌词的展示 01_(了解)之前页面的回顾和播放页的介绍 功能介绍 02_(掌握)播放页-点击Item跳转到播放页和传入ID 功能概览 1.创建页面music-player 2.监听item的点击 方式一&#xff1a;直接写在子组件上 绑定监听点击 需要获取…

关于xxl-job中的慢sql引发的磁盘I/O飙升导致拖垮整个数据库服务

背景&#xff1a; 某天突然发现服务探测接口疯狂告警、同时数据库CPU消耗也告警&#xff0c;最后系统都无法访问&#xff1b; 查看服务端日志&#xff0c;发现大量的报错如下&#xff1a; CommunicationsException: Communications link failure &#xff1a;The last packet s…

dapr入门与本地托管模式尝试

1 简介 Dapr是一个可移植的、事件驱动的运行时&#xff0c;它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序&#xff0c;并可运行在云平台或边缘计算中&#xff0c;它同时也支持多种编程语言和开发框架。Dapr支持的语言很多&#xff0c;包括C/Go/Java/JavaSc…

antv/x6 2.x 搭建流程图编辑页面(1)

进来闲来无事&#xff0c;看到x6 2.x版本也更新了有几个月了&#xff0c;便想着熟悉下2.x版本 一、首先搭建项目基础框架。 // yarn 方式 yarn create vitejs/app v3-ts --template vue-ts cd v3-ts yarn yarn dev// npm npm init vitejs/app v3-ts --template vue-ts cd v3…

人工神经网络BP神经网络结构及优化原理单隐层,多隐层及反向传播梯度下降释义

神经网络&#xff1a;人工神经网络&#xff08;Artificial Neural Networks&#xff0c;简写为ANNs&#xff09;也简称为神经网络&#xff08;NNs&#xff09;或称作连接模型&#xff08;Connection Model&#xff09;&#xff0c;它是一种模仿动物神经网络行为特征&#xff0c…

ASEMI整流模块MDA110-16参数,MDA110-16规格

编辑-Z ASEMI整流模块MDA110-16参数&#xff1a; 型号&#xff1a;MDA110-16 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;1600V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;1700V 最大平均正向整流输出电流&#xff08;IF&#xff0…

多线程synchronized对象锁与静态锁之间的8锁问题理解

目录8锁问题锁1&#xff1a;多个线程使用同一对象分别调用不同带有带synchronized关键字且非静态的方法锁2&#xff1a;在锁1基础上&#xff0c;增加A线程执行的方法的执行时间&#xff0c;使得B有机会参与执行锁3&#xff1a;多个线程使用同一对象&#xff0c;一个线程执行带有…

三菱Q系列QJ71C24N模块 MODBUS通信(含完整步骤+源代码)

MODBUS通信的其它相关基础知识请参看下面的文章链接: SMART S7-200PLC MODBUS通信_RXXW_Dor的博客-CSDN博客MODBUS 是 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。自从 1979 年出现工业串行链路的事实标准以来,…

7z压缩包有可能被破解吗,需要多久,暴力穷举和字典破解分别的速度分析

开门见山&#xff0c;我看到网上有很多此类软件&#xff0c;功能就是来破解7zip格式的压缩包&#xff0c;但都没有认真进行测试&#xff0c;这里认真进行判断和测试 首先&#xff0c;目前世界最快的计算机为Frontier&#xff0c;算力1,685.65 PFlop/s。目前最高的算力为全网比…

【IoT】智能小产品:简易电子琴设计

说明 随着电子技术的发展&#xff0c;电子技术正在逐渐改善着人们的学习、生活、工作&#xff0c;因此开发本系统希望能够给人们多带来一点生活上的乐趣&#xff0c;电子技术与音乐的结合不断加深。 由此而产生的电子琴在这种形势下&#xff0c;因其体积小&#xff0c;易于携…