使用Java和Google Guava簡化開發

省赚客开发者团队發表於2024-07-20

使用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 提供了 StringsCharMatcher 類來處理字串。以下是一些示例:

  • 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 提供了許多併發工具類,如 ListenableFutureListeningExecutorService,它們可以用來簡化併發程式設計。

  • 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 提供的功能。

本文著作權歸聚娃科技微賺淘客系統開發者團隊,轉載請註明出處!

相關文章