Java开发中如何更高效?

一、JDK自带工具包 (java.lang*.java.util.*等)

面是Java中jdk中附带的一些常见工具类及其方法和示例的简介

工具类 / 类所在包

常用方法

描述

示例

Arrays (java.util)

sort()

对数组进行排序

Arrays.sort(arr);

binarySearch()

在数组中执行二分查找

int index = Arrays.binarySearch(arr, key);

equals()

比较两个数组内容是否相等

boolean isEqual = Arrays.equals(arr1, arr2);

fill()

使用特定值填充数组

Arrays.fill(arr, val);

toString()

返回数组内容的字符串表示

String arrayString = Arrays.toString(arr);

ArrayList (java.util)

add()

向列表添加元素

list.add(element);

remove()

移除列表中的元素

list.remove(index);

size()

返回列表中的元素个数

int size = list.size();

get()

获取指定索引位置的元素

Object element = list.get(index);

contains()

判断列表是否包含某个元素

boolean isPresent = list.contains(element);

Collections (java.util)

sort()

对列表进行排序

Collections.sort(list);

reverse()

反转列表

Collections.reverse(list);

shuffle()

随机排列列表

Collections.shuffle(list);

min()/max()

查找集合中的最小/最大值

Object min = Collections.min(collection);

synchronizedList()

返回线程安全的列表

List syncList = Collections.synchronizedList(list);

Math (java.lang)

abs()

返回绝对值

int absolute = Math.abs(-123);

max()/min()

返回两个数中的最大值/最小值

int max = Math.max(10, 20);

sqrt()

返回平方根

double root = Math.sqrt(16);

pow()

返回第一个参数的第二个参数次幂

double power = Math.pow(2, 3);

random()

返回一个随机数

double randomNum = Math.random();

SimpleDateFormat (java.text)

format()

格式化日期为文本

String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

parse()

解析文本以生成日期

Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01");

UUID (java.util)

randomUUID()

生成随机的唯一标识符

UUID id = UUID.randomUUID();

fromString()

从字符串中创建UUID

UUID id = UUID.fromString(uuidString);

ExecutorService (java.util.concurrent)

submit()

提交一个可执行的任务以供执行

Future result = executor.submit(aCallable);

invokeAll()

执行给定的任务集合

List<Future> results = executor.invokeAll(taskList);

shutdown()

启动有序关闭

executor.shutdown();

awaitTermination()

阻塞直到所有任务在关闭请求后完成执行

executor.awaitTermination(1, TimeUnit.MINUTES);

Stream (java.util.stream)

filter()

对流进行筛选

stream.filter(e -> e > 10).collect(Collectors.toList());

map()

对流中的每个元素应用函数

stream.map(String::toUpperCase).collect(Collectors.toList());

collect()

将流转换成其他形式

List<Integer> list = stream.collect(Collectors.toList());

forEach()

遍历流中的每个元素

stream.forEach(System.out::println);

reduce()

对流中元素进行归约

`int sum = stream

二、Apache Commons 相关

Apache Commons提供的工具类大大简化了日常编码任务,使得开发者可以快速高效地处理常见问题

2.1. 相关maven依赖

<!-- Apache Commons Lang -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

<!-- Apache Commons IO -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

<!-- Apache Commons Collections -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>

2.2. 相关类库以及方法介绍

工具类 / 所属库

常用方法

描述

使用示例

StringUtils / Apache Commons Lang

isEmpty()

检查字符串是否为空或null

StringUtils.isEmpty(str)

isNotEmpty()

检查字符串是否非空且非null

StringUtils.isNotEmpty(str)

join()

连接数组元素为字符串

StringUtils.join(array, ',')

reverse()

反转字符串

StringUtils.reverse(str)

substringBetween()

获取两个字符串之间的子串

StringUtils.substringBetween(str, "<tag>", "</tag>")

FileUtils / Apache Commons IO

readFileToString()

将文件内容读取为字符串

FileUtils.readFileToString(file, Charset.defaultCharset())

writeStringToFile()

将字符串写入文件

FileUtils.writeStringToFile(file, string, Charset.defaultCharset())

copyFile()

复制文件

FileUtils.copyFile(srcFile, destFile)

deleteQuietly()

安静地删除文件,不抛异常

FileUtils.deleteQuietly(file)

sizeOfDirectory()

计算目录大小

FileUtils.sizeOfDirectory(directory)

RandomStringUtils / Apache Commons Lang

randomAlphabetic()

生成随机字母字符串

RandomStringUtils.randomAlphabetic(5)

randomNumeric()

生成随机数字字符串

RandomStringUtils.randomNumeric(5)

randomAlphanumeric()

生成随机字母数字混合字符串

RandomStringUtils.randomAlphanumeric(5)

NumberUtils / Apache Commons Lang

isCreatable()

检查字符串是否能转换为数字

NumberUtils.isCreatable("123")

toInt()

将字符串转换为int型数字

NumberUtils.toInt("5")

toDouble()

将字符串转换为double型数字

NumberUtils.toDouble("3.14")

max()

返回多个数字中的最大值

NumberUtils.max(1, 2, 3)

min()

返回多个数字中的最小值

NumberUtils.min(1, 2, 3)

IOUtils / Apache Commons IO

toString()

将输入流转换为字符串

IOUtils.toString(inputStream, Charset.defaultCharset())

copy()

将输入流的内容复制到输出流

IOUtils.copy(inputStream, outputStream)

toByteArray()

将输入流转换为字节数组

IOUtils.toByteArray(inputStream)

DigestUtils / Apache Commons Codec

md5Hex()

对字符串进行MD5散列

DigestUtils.md5Hex(string)

sha256Hex()

对字符串进行SHA-256散列

DigestUtils.sha256Hex(string)

CollectionUtils / Apache Commons Collections

isEmpty()

检查集合是否为空

CollectionUtils.isEmpty(collection)

isNotEmpty()

检查集合是否非空

CollectionUtils.isNotEmpty(collection)

intersect()

获取两个集合的交集

CollectionUtils.intersection(a, b)

union()

获取两个集合的并集

CollectionUtils.union(a, b)

subtract()

获取两个集合的差集(在a中不在b中的元素)

CollectionUtils.subtract(a, b)

DateFormatUtils / Apache Commons Lang

format()

格式化日期为字符串

DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")

三、Guava (Google提供的开源工具库)

Guava是Google提供的一套开源的Java工具库,它包含了很多质量高效的Java工具类。下面是Guava中一些常用的工具类和方法

3.1. 相关maven依赖

<dependencies>
  <!-- Other dependencies -->
  <dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.1-jre</version>
  </dependency>
  <!-- Other dependencies -->
</dependencies>

3.2. 相关类库以及方法介绍

工具类/类所在包

常用方法

描述

示例

Lists (com.google.common.collect)

newArrayList()

创建一个ArrayList实例

List<String> list = Lists.newArrayList();

reverse()

返回一个反转的列表视图

List<String> reversed = Lists.reverse(list);

partition()

把列表分割成指定大小的子列表

List<List<String>> parts = Lists.partition(list, 2);

Maps (com.google.common.collect)

newHashMap()

创建一个HashMap实例

Map<String, Integer> map = Maps.newHashMap();

uniqueIndex()

对集合中元素进行唯一性索引

ImmutableMap<String, String> index = Maps.uniqueIndex(list, keyFunction);

filterKeys()

返回一个满足特定键条件的Map视图

Map<String, Integer> filteredMap = Maps.filterKeys(map, Predicates.notNull());

Sets (com.google.common.collect)

newHashSet()

创建一个HashSet实例

Set<String> set = Sets.newHashSet();

intersection()

返回两个集合的交集

Set<String> common = Sets.intersection(set1, set2);

difference()

返回两个集合的差集

Set<String> diff = Sets.difference(set1, set2);

union()

返回两个集合的并集

Set<String> union = Sets.union(set1, set2);

Multimap (com.google.common.collect)

ArrayListMultimap.create()

创建一个多值Map实例

Multimap<String, Integer> multimap = ArrayListMultimap.create();

put()

向Multimap添加键值对

multimap.put(key, value);

get()

根据键获取值集合

Collection<Integer> values = multimap.get(key);

values()

获取所有值的集合

Collection<Integer> allValues = multimap.values();

Cache (com.google.common.cache)

CacheBuilder.newBuilder()

创建一个Cache实例

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder().build(loader);

put()

向Cache中添加一个元素

cache.put(key, value);

getIfPresent()

如果存在则获取元素

Graph g = cache.getIfPresent(key);

get()

获取缓存中的元素,不存在则使用Loader加载

Graph g = cache.get(key);

invalidate()

从缓存中移除元素

cache.invalidate(key);

Preconditions (com.google.common.base)

checkNotNull()

检查对象是否为null

Preconditions.checkNotNull(value);

checkArgument()

检查表达式是否为真

Preconditions.checkArgument(i >= 0);

checkState()

检查对象的状态

Preconditions.checkState(validateObjectState());

checkElementIndex()

检查索引是否有效

Preconditions.checkElementIndex(index, size);

Strings (com.google.common.base)

isNullOrEmpty()

检查字符串是否为null或空

boolean isNullOrEmpty = Strings.isNullOrEmpty(input);

nullToEmpty()

如果字符串为null,返回空字符串

String safeString = Strings.nullToEmpty(input);

emptyToNull()

如果字符串为空,返回null

String nullableString = Strings.emptyToNull(input);

padEnd()

将字符串扩展到特定长度

String padded = Strings.padEnd(input, minLength, padChar);

padStart()

在字符串前添加字符直到特定长度

String padded = Strings.padStart(input, minLength, padChar);

RateLimiter(com.google.common.util.

concurrent)

RateLimiter.create(double permitsPerSecond)

创建一个RateLimiter实例

RateLimiter rateLimiter = RateLimiter.create(2.0);

rateLimiter.acquire()

请求一个许可,如果许可可用,则立即返回

rateLimiter.acquire();

rateLimiter.acquire(int permits)

请求指定数量的许可,如果许可可用,则立即返回

rateLimiter.acquire(2);

rateLimiter.tryAcquire()

尝试获取一个许可,如果许可可用,则返回true

boolean acquired = rateLimiter.tryAcquire();

rateLimiter.tryAcquire(int permits)

尝试获取指定数量的许可,如果许可可用,则返回true

boolean acquired = rateLimiter.tryAcquire(3);

3.2.1.关于限流RateLimiter

下面是一个完整的示例

import com.google.common.util.concurrent.RateLimiter;

public class Example {
    public static void main(String[] args) {
        RateLimiter rateLimiter = RateLimiter.create(2.0); // 创建一个每秒允许2个许可的RateLimiter实例

        // 请求一个许可,如果许可可用,则立即返回
        rateLimiter.acquire();
        System.out.println("Task 1 executed");

        // 请求指定数量的许可,如果许可可用,则立即返回
        rateLimiter.acquire(2);
        System.out.println("Task 2 executed");

        // 尝试获取一个许可,如果许可可用,则返回true
        boolean acquired = rateLimiter.tryAcquire();
        System.out.println("Task 3 acquired: " + acquired);

        // 尝试获取指定数量的许可,如果许可可用,则返回true
        acquired = rateLimiter.tryAcquire(3);
        System.out.println("Task 4 acquired: " + acquired);
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进朱者赤

多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值