干货:排名前16的Java工具类!("精选干货:Java必备Top 16工具类详解!")

原创
ithorizon 6个月前 (10-20) 阅读数 17 #后端开发

精选干货:Java必备Top 16工具类详解!

一、Apache Commons Lang

Apache Commons Lang 是一个Java工具类库,提供了对Java标准库的扩展。它包括了很多实用的工具类,可以帮助开发者简化代码。

1.1. StringUtils

StringUtils 提供了字符串操作的静态方法,如判断字符串是否为空、连接字符串等。

public class StringUtils {

public static boolean isEmpty(String str) {

return str == null || str.length() == 0;

}

public static String join(Object[] array, String separator) {

return join(array, separator, 0, array.length);

}

}

1.2. ArrayUtils

ArrayUtils 提供了数组操作的静态方法,如数组复制、添加元素等。

public class ArrayUtils {

public static Object[] add(Object[] original, Object element) {

Object[] newArray = (Object[]) java.lang.reflect.Array.newInstance(

original.getClass().getComponentType(), original.length + 1);

System.arraycopy(original, 0, newArray, 0, original.length);

newArray[original.length] = element;

return newArray;

}

}

二、Apache Commons Collections

Apache Commons Collections 是一个扩展了Java集合框架的工具类库,提供了许多新的数据结构和算法。

2.1. CollectionUtils

CollectionUtils 提供了集合操作的静态方法,如判断集合是否为空、集合交集等。

public class CollectionUtils {

public static boolean isEmpty(Collection coll) {

return coll == null || coll.isEmpty();

}

public static Collection intersection(Collection a, Collection b) {

if (a == null || b == null) {

return null;

}

Set result = new HashSet<>(Math.min(a.size(), b.size()));

for (Object element : a) {

if (b.contains(element)) {

result.add(element);

}

}

return result;

}

}

2.2. MapUtils

MapUtils 提供了Map操作的静态方法,如创建Map、合并Map等。

public class MapUtils {

public static Map union(Map a, Map b) {

Map union = new HashMap<>(a);

union.putAll(b);

return union;

}

}

三、Apache Commons Math

Apache Commons Math 是一个Java数学工具库,提供了许多数学运算和统计方法。

3.1. MathUtils

MathUtils 提供了数学运算的静态方法,如计算最大公约数、判断质数等。

public class MathUtils {

public static int gcd(int a, int b) {

while (b != 0) {

int temp = b;

b = a % b;

a = temp;

}

return a;

}

public static boolean isPrime(int number) {

if (number <= 1) {

return false;

}

for (int i = 2; i <= Math.sqrt(number); i++) {

if (number % i == 0) {

return false;

}

}

return true;

}

}

3.2. StatUtils

StatUtils 提供了统计方法的静态方法,如计算平均值、标准差等。

public class StatUtils {

public static double mean(double[] values) {

double sum = 0.0;

for (double v : values) {

sum += v;

}

return sum / values.length;

}

public static double variance(double[] values) {

double mean = mean(values);

double sumSqDiff = 0.0;

for (double v : values) {

sumSqDiff += (v - mean) * (v - mean);

}

return sumSqDiff / values.length;

}

}

四、Google Guava

Google Guava 是一个Java库,包含了许多Google开发的实用工具类。

4.1. Strings

Strings 提供了字符串操作的静态方法,如判断字符串是否为空、连接字符串等。

public class Strings {

public static boolean isNull(String str) {

return str == null;

}

public static String join(Iterable parts, String separator) {

return Joiner.on(separator).join(parts);

}

}

4.2. Collections

Collections 提供了集合操作的静态方法,如创建不可变集合、集合交集等。

public class Collections {

public static ImmutableSet intersection(Set a, Set b) {

return FluentIterable.from(a).filter(b::contains).toSet();

}

}

五、其他常用工具类

5.1. Java 8 Optional

Optional 是Java 8引入的一个类,用于处理大概为null的对象。它可以避免显式的null检查。

public class Optional {

public static Optional of(T value) {

return new Optional<>(value);

}

public T get() {

if (value == null) {

throw new NoSuchElementException("No value present");

}

return value;

}

}

5.2. Java 8 Stream

Stream 是Java 8引入的一个新特性,用于简化集合操作。它拥护并行处理,并提供了一系列的流操作。

List strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");

List filtered = strings.stream()

.filter(s -> !s.isEmpty())

.filter(s -> s.length() == 3)

.collect(Collectors.toList());

5.3. Java 8 DateTime API

Java 8 引入了新的日期时间API,包括 LocalDate、LocalTime、DateTimeFormatter 等,用于替代老的 Date 和 Calendar 类。

LocalDate today = LocalDate.now();

LocalDate nextWeek = today.plusWeeks(1);

LocalDateTime dateTime = LocalDateTime.of(2021, Month.NOVEMBER, 2, 10, 30);

5.4. JavaFX

JavaFX 是一个用于构建富客户端应用程序的框架。它提供了许多用于UI开发的工具类,如 Stage、Scene、Button 等。

Stage stage = new Stage();

stage.setTitle("Hello World");

Button btn = new Button("Say 'Hello World'");

btn.setOnAction(new EventHandler() {

@Override

public void handle(ActionEvent event) {

System.out.println("Hello World!");

}

});

Scene scene = new Scene(new StackPane(btn), 300, 250);

stage.setScene(scene);

stage.show();

5.5. Hibernate Validator

Hibernate Validator 是一个Bean Validation的实现,用于对Java对象进行校验。

import javax.validation.constraints.Min;

import javax.validation.constraints.NotNull;

public class User {

@NotNull

private String name;

@Min(18)

private int age;

// getters and setters

}

5.6. Jackson

Jackson 是一个高性能的JSON处理库,用于将Java对象转换成JSON字符串,或者将JSON字符串转换成Java对象。

ObjectMapper mapper = new ObjectMapper();

String json = mapper.writeValueAsString(new User("John", 30));

User user = mapper.readValue(json, User.class);

5.7. Log4j

Log4j 是一个用于记录日志的Java库。它提供了灵活的日志记录机制,并拥护多种日志记录对策。

private static final Logger logger = LogManager.getLogger(User.class);

public void login(String username) {

try {

// login logic

logger.info("User {} logged in", username);

} catch (Exception e) {

logger.error("Failed to login user {}", username, e);

}

}

5.8. Mockito

Mockito 是一个用于模拟Java对象的库。它可以帮助开发者编写单元测试,模拟外部依存。

public class UserServiceTest {

@Mock

private UserRepository userRepository;

@Test

public void testLogin() {

when(userRepository.findByName("John")).thenReturn(new User("John", 30));

UserService userService = new UserService(userRepository);

User user = userService.login("John");

assertEquals("John", user.getName());

}

}

5.9. JUnit

JUnit 是一个用于编写和运行Java单元测试的框架。它提供了注解和断言,以简化测试过程。

public class UserServiceTest {

@Test

public void testLogin() {

UserService userService = new UserService();

User user = userService.login("John", "password");

assertNotNull(user);

assertEquals("John", user.getName());

}

}

5.10. Spring Framework

Spring Framework 是一个用于简化Java应用程序开发的框架。它提供了许多模块,如Spring Core、Spring MVC、Spring Data 等。

@Configuration

public class AppConfig {

@Bean

public UserService userService(UserRepository userRepository) {

return new UserService(userRepository);

}

}

5.11. MyBatis

MyBatis 是一个半ORM框架,用于将Java对象映射到数据库表中。它提供了映射器接口和XML配置文件,以简化数据库操作。

public interface UserRepository {

User findByName(String name);

}

5.12. Apache Lucene

Apache Lucene 是一个高性能的全文搜索引擎库。它提供了索引和搜索文本数据的工具类。

IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(analyzer));

Document doc = new Document();

doc.add(new TextField("title", "Java", Field.Store.YES));

writer.addDocument(doc);

writer.close();

5.13. Apache Maven

Apache Maven 是一个项目管理和构建自动化工具。它使用XML配置文件来管理项目依存、构建过程等。

com.example

example-dependency

1.0.0

5.14. Git

Git 是一个分布式版本控制系统,用于跟踪和管理源代码历史。它提供了命令行工具和图形界面工具。

git clone https://github.com/example/repo.git

git add .

git commit -m "Initial commit"

git push origin master

5.15. Gradle

Gradle 是一个构建自动化工具,它使用Groovy或Kotlin脚本定义构建逻辑。

plugins {

id 'java'

}

repositories {

mavenCentral()

}

dependencies {

implementation 'com.example:example-dependency:1.0.0'

}

5.16. Hibernate

Hibernate 是一个ORM框架,用于将Java对象映射到数据库表中。它提供了映射器接口和XML或注解配置,以简化数据库操作。

@Entity

public class User {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

@Column(name = "name")

private String name;

// getters and setters

}


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门