Java开发中如何更高效?

简介: 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);
    }
}


相关文章
|
23天前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
53 4
|
22天前
|
监控 Java 测试技术
Java开发现在比较缺少什么工具?
【10月更文挑战第15天】Java开发现在比较缺少什么工具?
32 1
|
23天前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
49 2
|
3天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
13 4
|
5天前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
21 4
|
15天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
62 8
|
10天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
11天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
26 2
|
11天前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
14 1
|
19天前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
下一篇
无影云桌面