使用Java和Google Guava簡化開發
大家好,我是微賺淘客系統3.0的小編,是個冬天不穿秋褲,天冷也要風度的程式猿!
Google Guava 是 Google 開發的一個 Java 開源庫,它提供了許多工具和庫來簡化 Java 開發。Guava 提供了從集合類到快取、字串處理、併發工具等多種功能。本篇文章將介紹如何使用 Google Guava 來簡化開發,提供一些實際的程式碼示例,幫助你更高效地開發 Java 應用程式。
1. 新增 Guava 依賴
首先,你需要在 pom.xml
檔案中新增 Guava 依賴:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
2. 使用 Guava 的集合工具
Guava 提供了許多集合工具類,可以用來簡化集合操作。以下是幾個常用的集合工具類:
- Immutable Collections: 不可變集合類,可以避免意外修改。
package cn.juwatech.guava;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
public class ImmutableCollectionsExample {
public static void main(String[] args) {
ImmutableList<String> list = ImmutableList.of("Apple", "Banana", "Cherry");
ImmutableMap<String, Integer> map = ImmutableMap.of("One", 1, "Two", 2, "Three", 3);
System.out.println("Immutable List: " + list);
System.out.println("Immutable Map: " + map);
}
}
- Multimap: 一個對映可以有多個值,類似於 Map
- 。
package cn.juwatech.guava;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
public class MultimapExample {
public static void main(String[] args) {
Multimap<String, String> multimap = ArrayListMultimap.create();
multimap.put("Fruits", "Apple");
multimap.put("Fruits", "Banana");
multimap.put("Vegetables", "Carrot");
System.out.println("Multimap: " + multimap);
}
}
3. 使用 Guava 的快取
Guava 的快取庫提供了記憶體快取的功能,可以用來快取計算結果,從而提高效能。
package cn.juwatech.guava;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.util.concurrent.TimeUnit;
public class CacheExample {
public static void main(String[] args) {
Cache<String, String> cache = CacheBuilder.newBuilder()
.maximumSize(100) // 最大快取項數
.expireAfterWrite(10, TimeUnit.MINUTES) // 10分鐘後過期
.build();
cache.put("key1", "value1");
System.out.println("Cached value: " + cache.getIfPresent("key1"));
}
}
4. 使用 Guava 的字串處理
Guava 提供了 Strings
和 CharMatcher
類來處理字串。以下是一些示例:
- Strings: 處理字串的工具方法。
package cn.juwatech.guava;
import com.google.common.base.Strings;
public class StringsExample {
public static void main(String[] args) {
String paddedString = Strings.padStart("foo", 10, '*');
System.out.println("Padded String: " + paddedString);
String nullToEmpty = Strings.nullToEmpty(null);
System.out.println("Null to Empty: " + nullToEmpty);
}
}
- CharMatcher: 用於字元的匹配和過濾。
package cn.juwatech.guava;
import com.google.common.base.CharMatcher;
public class CharMatcherExample {
public static void main(String[] args) {
String input = "abc123def456";
String digits = CharMatcher.digit().retainFrom(input);
System.out.println("Digits: " + digits);
}
}
5. 使用 Guava 的併發工具
Guava 提供了許多併發工具類,如 ListenableFuture
和 ListeningExecutorService
,它們可以用來簡化併發程式設計。
- ListenableFuture: 一個可以監聽的未來物件。
package cn.juwatech.guava;
import com.google.common.util.concurrent.*;
import java.util.concurrent.Executors;
import java.util.concurrent.Callable;
public class ListenableFutureExample {
public static void main(String[] args) {
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));
ListenableFuture<Integer> future = service.submit(() -> {
Thread.sleep(2000);
return 123;
});
Futures.addCallback(future, new FutureCallback<Integer>() {
@Override
public void onSuccess(Integer result) {
System.out.println("Result: " + result);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, service);
service.shutdown();
}
}
6. 使用 Guava 的預條件檢查
Guava 的 Preconditions
類可以用來在方法中進行引數驗證。
package cn.juwatech.guava;
import com.google.common.base.Preconditions;
public class PreconditionsExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
public static int divide(int numerator, int denominator) {
Preconditions.checkArgument(denominator != 0, "Denominator cannot be zero");
return numerator / denominator;
}
}
7. 使用 Guava 的集合轉換
Guava 提供了方便的工具來轉換集合,如將 Iterable
轉換為 List
。
package cn.juwatech.guava;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import java.util.Arrays;
import java.util.List;
public class CollectionConversionExample {
public static void main(String[] args) {
List<String> list = Lists.newArrayList("apple", "banana", "cherry");
Iterable<String> iterable = Iterables.filter(list, s -> s.startsWith("a"));
System.out.println("Filtered Iterable: " + Iterables.toString(iterable));
}
}
8. 總結
Google Guava 提供了許多強大的工具來簡化 Java 開發,包括集合工具、快取、字串處理、併發工具等。透過使用 Guava,你可以提高程式碼的簡潔性和可維護性,減少重複程式碼。希望這些示例能幫助你在專案中更好地利用 Guava 提供的功能。
本文著作權歸聚娃科技微賺淘客系統開發者團隊,轉載請註明出處!