干货:排名前16的Java工具类!("精选干货: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
}