Java工具包类

简介: java.util包有很多实用的类、接口。

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();
    }
}

相关文章
|
20天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
53 0
|
8天前
|
Java
java的类详解
在 Java 中,类是面向对象编程的核心概念,用于定义具有相似特性和行为的对象模板。以下是类的关键特性:唯一且遵循命名规则的类名;描述对象状态的私有属性;描述对象行为的方法,包括实例方法和静态方法;用于初始化对象的构造方法;通过封装保护内部属性;通过继承扩展其他类的功能;以及通过多态增强代码灵活性。下面是一个简单的 `Person` 类示例,展示了属性、构造方法、getter 和 setter 方法及行为方法的使用。
|
4天前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
19 9
Java——类与对象(继承和多态)
|
4天前
|
SQL Java 编译器
Java——类与对象(封装)
封装是面向对象编程中的概念,指将数据(属性)和相关操作(方法)组合成独立单元(类),使外部无法直接访问对象的内部状态,只能通过提供的方法进行交互,从而保护数据安全。例如,手机将各种组件封装起来,只暴露必要的接口供外部使用。实现封装时,使用`private`关键字修饰成员变量,并提供`get`和`set`方法进行访问和修改。此外,介绍了包的概念、导入包的方式及其注意事项,以及`static`关键字的使用,包括静态变量和方法的初始化与代码块的加载顺序。
18 10
Java——类与对象(封装)
|
4天前
|
Java C语言
Java——类与对象
这段内容介绍了Java中的类和对象、`this`关键字及构造方法的基本概念。类是对现实世界事物的抽象描述,包含属性和方法;对象是类的实例,通过`new`关键字创建。`this`关键字用于区分成员变量和局部变量,构造方法用于初始化对象。此外,还介绍了标准JavaBean的要求和生成方法。
18 9
Java——类与对象
|
3天前
|
存储 安全 Java
Java——String类详解
String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
10 1
Java——String类详解
|
14天前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
5天前
|
存储 Java
Java的对象和类的相同之处和不同之处
在 Java 中,对象和类是面向对象编程的核心。
|
9天前
|
监控 IDE Java
【Java性能调优新工具】JDK 22性能分析器:深度剖析,优化无死角!
【9月更文挑战第9天】JDK 22中的性能分析器为Java应用的性能调优提供了强大的支持。通过深度集成、全面监控、精细化分析和灵活报告生成等核心优势,性能分析器帮助开发者实现了对应用性能的全面掌控和深度优化。在未来的Java开发过程中,我们期待性能分析器能够继续发挥重要作用,为Java应用的性能提升贡献更多力量。
|
4天前
|
Java
Java Character 类详解
`Character` 类是 Java 中的一个封装类,位于 `java.lang` 包中,主要用于处理单个字符。它是一个最终类,提供了多种静态方法来检查和操作字符属性,如判断字符是否为字母、数字或空格,以及转换字符的大小写等。此外,`Character` 类还支持自动装箱和拆箱,简化了 `char` 和 `Character` 之间的转换。以下是一些示例代码,展示了如何使用 `Character` 类的方法来检查字符属性和执行字符转换。掌握 `Character` 类的用法有助于更高效地处理字符数据。