第 14 节 开发支持类库
Arrays类
在之前一直使用的“java.util.Arrays.sort()”可以实现数组的排序,而Arrays类就是java.util包中提供的一个工具类,这个工具类主要是完成所有与数组有关的操作功能。
在这个类里面存在有二分查找法:public static int binarySearch(Object[] a, int fromIndex, int toIndex, Object key)。但是要进行二分查找前提条件就是先要排序。
范例: 实现二分查找
package com.alpha;
import java.util.Arrays;
public class MainClass{
public static void main(String[] args) throws Exception {
int[] date = new int[] {1, 5, 6, 2, 3, 4, 9, 8, 7, 10};
Arrays.sort(date);
System.out.println(Arrays.binarySearch(date, 9));
}
}Arrays提供了数组比较:public static boolean equals(Object[] a, Object[] a2),只不过借用了equals()方法名称与Object类的equals()没有任何关系。
要想判断数组是否相同,需要顺序完全一致。
填充数组:public static void fill(Object[] a, int fromIndex, int toIndex, Object val);
将数组变为字符串:public static String toString(Object[] a)。
UUID类
通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。
UUID的目的是让分布式系统中的所有元素都能有唯一的辨识信息,而不需要透过中央控制端来做辨识信息的指定。
获取UUID对象:
public static UUID randomUUID();根据字符串获取UUID内容:
public static UUID fromString(String name);
Optional类
Optional类的主要功能是进行NPE的相关处理,在以往进行开发的时候,为了防止程序出现NPE往往需要追加验证。
范例: 传统的引用传递问题
在接收引用的时候往往都需要进行NPE的判断,为了解决这个问题,从JD1.8开始提供有Optional类,这个类可以实现NPE的处理操作。
返回空数据:
public static <T> Optional<T> empty();获取数据:
public T get();保存数据,但是不允许为null:
public static <T> Optional<T> of(T value);保存数据,允许为null:
public static <T> Optional<T> ofNullable(T value);为空返回默认值:
public T orElse(T other);
范例: 修改程序
ThreadLocal类
ThreadLocal是一个关于创建线程局部变量的类。
通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改。
范例: 定义一个发送消息的功能
以上的程序采用的是单线程的处理方法,如果在多线程的环境下还能否正常运行?
范例: 在多线程环境下运行
发现此时程序出现了较大的影响,线程与线程之间产生了干扰。在保持Channel核心结构不变的情况下,需要考虑到每个线程独立操作的问题。Channel所保存的消息相对于线程来讲应是线程私有的,此时就可以通过ThreadLocal类来存放数据。
构造方法:
public ThreadLocal();设置数据:
public void set(T value);取出数据:
public T get();删除数据:
public void remove();
范例: 解决线程同步问题
定时器
定时器的主要功能是进行任务的定时操作,在特定的时间执行特定的任务。在Java中提供有定时器的支持,但是这种任务的处理知识实现了一种间隔触发的操作。
如果要想实现定时任务需要有一个定时操作的主体类,以及一个定时任务的控制。可以使用两个类实现:
java.util.TimerTask:实现定时任务;java.util.Timer:进行任务的启动:任务启动:
public void schedule(TimerTask task, long delay);间隔触发:
public void scheduleAtFixedRate(TimerTask task, long delay, long period);
范例: 定时任务
Base64加密工具
加密操作是如今应用必不可少的组成部分,JDK1.8开始提供了一组新的加密处理操作,Base64处理,在这个类里面有两个内部类:
Base64.Encoder:进行加密处理;加密:
public byte[] encode(byte[] src);
Base64.Decoder:进行解密处理;解密:
public byte[] decode(byte[] src);
范例: 实现加密解密操作
最后更新于
这有帮助吗?