最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?Guava的使用技巧整理

 更新時間:2023年03月30日 09:22:12   作者:走進Java  
Guava是Google發(fā)布的一個開源庫,主要提供了一些在Java開發(fā)中非常有用的工具類和API,不管是工作還是學習都是非常值得我們去熟悉的,一起來看看吧

Guava簡介

Guava是Google發(fā)布的一個開源庫,主要提供了一些在Java開發(fā)中非常有用的工具類和API,比如字符串處理、集合操作、函數式編程、緩存等等。不管是工作還是學習都是非常值得我們去熟悉的,一起來看看吧。

字符串(Strings)

Strings是Guava提供的一組字符串工具,它提供了許多有用的方法來處理字符串。以下是Strings的主要方法:

  • isNullOrEmpty(String string):判斷字符串是否為空或null。
  • padEnd(String string, int minLength, char padChar):在字符串末尾填充指定字符,直到字符串達到指定長度。
  • padStart(String string, int minLength, char padChar):在字符串開頭填充指定字符,直到字符串達到指定長度。
  • repeat(String string, int count):重復指定字符串指定次數。
  • commonPrefix(CharSequence a, CharSequence b):獲取兩個字符串的最長公共前綴。
  • commonSuffix(CharSequence a, CharSequence b):獲取兩個字符串的最長公共后綴。

以下是Strings的使用示例:

public class StringsDemo {
    public static void main(String[] args) {
        // 判斷字符串是否為空或null
        String str1 = null;
        String str2 = "";
        System.out.println(Strings.isNullOrEmpty(str1));
        System.out.println(Strings.isNullOrEmpty(str2));

        // 在字符串末尾填充指定字符,直到字符串達到指定長度
        String str3 = "abc";
        String paddedStr1 = Strings.padEnd(str3, 6, '*');
        System.out.println(paddedStr1);

        // 在字符串開頭填充指定字符,直到字符串達到指定長度
        String str4 = "abc";
        String paddedStr2 = Strings.padStart(str4, 6, '*');
        System.out.println(paddedStr2);

        // 重復指定字符串指定次數
        String str5 = "abc";
        String repeatedStr = Strings.repeat(str5, 3);
        System.out.println(repeatedStr);

        // 獲取兩個字符串的最長公共前綴
        String str6 = "abcdefg";
        String str7 = "abcdxyz";
        String commonPrefix = Strings.commonPrefix(str6, str7);
        System.out.println(commonPrefix);

        // 獲取兩個字符串的最長公共后綴
        String str8 = "abcdefg";
        String str9 = "xyzdefg";
    String commonSuffix = Strings.commonSuffix(str8, str9);
    System.out.println(commonSuffix);
}

集合操作(Collections)

Guava提供了一些非常有用的集合操作API,如下所示:

1.ImmutableList

不可變集合是Guava的一個重要特性,它可以確保集合不被修改,從而避免并發(fā)訪問的問題。ImmutabelList是不可變List的實現,下面是一個示例代碼:

List<String> list = Lists.newArrayList("a", "b", "c");
ImmutableList<String> immutableList = ImmutableList.copyOf(list);

2.Iterables

Iterables類提供了一些有用的方法來操作集合,如下所示:

Iterable<String> iterable = Lists.newArrayList("a", "b", "c");

// 判斷集合是否為空
boolean isEmpty = Iterables.isEmpty(iterable);

// 獲取第一個元素,如果集合為空返回null
String first = Iterables.getFirst(iterable, null);

// 獲取最后一個元素,如果集合為空返回null
String last = Iterables.getLast(iterable, null);

// 獲取所有符合條件的元素
Iterable<String> filtered = Iterables.filter(iterable, new Predicate<String>() {
    @Override
    public boolean apply(String input) {
        return input.startsWith("a");
    }
});

// 轉換集合類型
List<String> newList = Lists.newArrayList(Iterables.transform(iterable, new Function<String, String>() {
    @Override
    public String apply(String input) {
        return input + input;
    }
}));

3.Multimaps

Multimaps提供了一個非常有用的數據結構,它允許一個鍵對應多個值,下面是一個示例代碼:

ListMultimap<Integer, String> map = ArrayListMultimap.create();
map.put(1, "a");
map.put(1, "b");
map.put(2, "c");
List<String> values = map.get(1); // 返回[a, b]

4.Maps

Maps提供了一些有用的方法來操作Map,如下所示:

Map<Integer, String> map = ImmutableMap.of(1, "a", 2, "b", 3, "c");

// 判斷Map是否為空
boolean isEmpty = Maps.isEmpty(map);

// 獲取Map中的所有鍵
Set<Integer> keys = map.keySet();

// 獲取Map中的所有值
Collection<String> values = map.values();

// 獲取Map中的所有鍵值對
Set<Map.Entry<Integer, String>> entries = map.entrySet();

// 根據鍵獲取值,如果不存在則返回null
String value = Maps.getIfPresent(map, 1);

條件檢查(Preconditions)

Preconditions是Guava提供的一組前置條件檢查工具,它提供了一些檢查參數是否符合預期的方法。以下是Preconditions的主要方法:

  • checkArgument(boolean expression, String errorMessageTemplate, Object... errorMessageArgs):檢查參數是否符合預期,并拋出IllegalArgumentException異常,可以包含錯誤信息模板和占位符。
  • checkNotNull(T reference, String errorMessageTemplate, Object... errorMessageArgs):檢查參數是否為null,并拋出NullPointerException異常,可以包含錯誤信息模板和占位符。
  • checkState(boolean expression, String errorMessageTemplate, Object... errorMessageArgs):檢查對象狀態(tài)是否符合預期,并拋出IllegalStateException異常,可以包含錯誤信息模板和占位符。
  • checkElementIndex(int index, int size, String errorMessageTemplate, Object... errorMessageArgs):檢查下標是否在集合的范圍內,并拋出IndexOutOfBoundsException異常,可以包含錯誤信息模板和占位符。
  • checkPositionIndex(int index, int size, String errorMessageTemplate, Object... errorMessageArgs):檢查下標是否在集合的范圍內,可以等于集合的大小,并拋出IndexOutOfBoundsException異常,可以包含錯誤信息模板和占位符。
  • checkPositionIndexes(int start, int end, int size):檢查開始下標和結束下標是否在集合的范圍內,并拋出IndexOutOfBoundsException異常。

以下是Preconditions的使用示例:

public class PreconditionsDemo {
    public static void main(String[] args) {
        // 檢查參數是否符合預期,并拋出IllegalArgumentException異常,可以包含錯誤信息模板和占位符
        String str1 = "abc";
        Preconditions.checkArgument(str1.length() < 3, "字符串長度必須小于3");
        // 檢查參數是否為null,并拋出NullPointerException異常,可以包含錯誤信息模板和占位符
        String str2 = null;
        Preconditions.checkNotNull(str2, "字符串不能為空");
        // 檢查對象狀態(tài)是否符合預期,并拋出IllegalStateException異常,可以包含錯誤信息模板和占位符
        boolean flag1 = false;
        Preconditions.checkState(flag1, "狀態(tài)不正確");
        // 檢查下標是否在集合的范圍內,并拋出IndexOutOfBoundsException異常,可以包含錯誤信息模板和占位符
        List<Integer> list1 = Lists.newArrayList(1, 2, 3, 4, 5);
        Preconditions.checkElementIndex(6, list1.size(), "下標越界");
        // 檢查下標是否在集合的范圍內,可以等于集合的大小,并拋出IndexOutOfBoundsException異常,可以包含錯誤信息模板和占位符
        List<Integer> list2 = Lists.newArrayList(1, 2, 3, 4, 5);
        Preconditions.checkPositionIndex(5, list2.size(), "下標越界");
        // 檢查開始下標和結束下標是否在集合的范圍內,并拋出IndexOutOfBoundsException異常
        List<Integer> list3 = Lists.newArrayList(1, 2, 3, 4, 5);
        Preconditions.checkPositionIndexes(2, 6, list3.size());
        // 可以在錯誤信息中使用占位符
        int value1 = 101;
        Preconditions.checkArgument(value1 <= 100, "值必須小于等于 %s", 100);
        // 可以使用Supplier來避免計算開銷
        int value2 = 101;
        Preconditions.checkArgument(value2 <= 100, () -> "值必須小于等于 " + 100);
}

可以設置過期時間的本地緩存(CacheBuilder)

Cache是Guava提供的一個緩存工具類,它可以幫助我們在內存中緩存數據,提高程序的性能。以下是Cache的主要方法:

  • get(K key, Callable<? extends V> valueLoader):獲取指定key的緩存值,如果緩存中沒有,則調用valueLoader加載數據并存入緩存。
  • getIfPresent(Object key):獲取指定key的緩存值,如果緩存中沒有,則返回null。
  • getAllPresent(Iterable<?> keys):獲取指定keys的緩存值,如果緩存中沒有,則返回null。
  • put(K key, V value):將指定key的緩存值存入緩存。
  • putAll(Map<? extends K, ? extends V> m):將指定Map的緩存值存入緩存。
  • invalidate(Object key):將指定key的緩存值從緩存中刪除。
  • invalidateAll(Iterable<?> keys):將指定keys的緩存值從緩存中刪除。
  • invalidateAll():將所有緩存值從緩存中刪除。
  • size():獲取緩存中緩存值的數量。
  • asMap():將緩存轉換成Map。
public class CacheDemo {
    public static void main(String[] args) {
        Cache<String, String> cache = CacheBuilder.newBuilder()
                .maximumSize(100)
                .expireAfterWrite(10, TimeUnit.MINUTES)
                .build();

        cache.put("key", "value");

        String value = cache.getIfPresent("key");
    }
}

以上是Guava的主要工具類介紹及其使用場景,當然不止這些了,Guava還有Throwables(異常工具類),EventBus(事件總線)等等,它們可以大大提高我們程序的開發(fā)效率,同時也為我們提供了很多方便的工具方法。

到此這篇關于Java Guava的使用技巧整理的文章就介紹到這了,更多相關Java Guava內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現顏色漸變效果

    Java實現顏色漸變效果

    這篇文章主要為大家詳細介紹了Java實現顏色漸變效果的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 深入理解java虛擬機的故障處理工具

    深入理解java虛擬機的故障處理工具

    大家都知道在給系統定位問題的時候,知識、經驗是關鍵基礎,數據是依據,工具是運用知識處理數據的手段。Java開發(fā)人員可以在jdk安裝的bin目錄下找到除了java,javac以外的其他命令。這些命令主要是一些用于監(jiān)視虛擬機和故障處理的工具,下面來看看詳細的介紹。
    2016-11-11
  • play for scala 實現SessionFilter 過濾未登錄用戶跳轉到登錄頁面

    play for scala 實現SessionFilter 過濾未登錄用戶跳轉到登錄頁面

    這篇文章主要介紹了play for scala 實現SessionFilter 過濾未登錄用戶跳轉到登錄頁面的相關資料,需要的朋友可以參考下
    2016-11-11
  • Java中的FutureTask源碼解析

    Java中的FutureTask源碼解析

    這篇文章主要介紹了Java中的FutureTask源碼解析,FutureTask是一個可取消的異步計算,這個類是Future的實現類,有開始和取消一個計算的方法,如果一個計算已經完成可以查看結果,需要的朋友可以參考下
    2023-12-12
  • 淺談SpringBoot資源初始化加載的幾種方式

    淺談SpringBoot資源初始化加載的幾種方式

    在平時的業(yè)務模塊開發(fā)過程中,難免會需要做一些全局的任務、緩存、線程等等的初始化工作,那么如何解決這個問題呢?本文就來介紹一下,感興趣的可以了解一下
    2021-07-07
  • springboot學習之Thymeleaf模板引擎及原理介紹

    springboot學習之Thymeleaf模板引擎及原理介紹

    本文主要介紹一下SpringBoot給我們推薦的Thymeleaf模板引擎,這模板引擎呢,是一個高級語言的模板引擎,他的這個語法更簡單而且功能更強大,對springboot?Thymeleaf模板引擎相關知識感興趣的朋友一起看看吧
    2022-02-02
  • 使用SpringSecurity設置角色和權限的注意點

    使用SpringSecurity設置角色和權限的注意點

    這篇文章主要介紹了使用SpringSecurity設置角色和權限的注意點,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot實現WebSocket服務并讓客戶端實時接收

    SpringBoot實現WebSocket服務并讓客戶端實時接收

    使用SpringBoot和WebSocket可創(chuàng)建實時消息推送服務,首先添加WebSocket依賴至pom.xml,配置WebSocket端點和邏輯處理器,通過WebSocketHandler處理消息,使用AnnouncementController模擬消息推送,支持HTML和微信小程序客戶端接收消息,感興趣的可以了解一下
    2024-10-10
  • Spring對靜態(tài)變量無法注入的解決方案

    Spring對靜態(tài)變量無法注入的解決方案

    這篇文章主要介紹了使用Spring對靜態(tài)變量無法注入的解決方案,具有很好的參考價值,希望對大家有所幫助。
    2021-07-07
  • 詳解Java的類加載機制及熱部署的原理

    詳解Java的類加載機制及熱部署的原理

    今天我要講的就是Java的熱部署的原理,由于熱部署的原理和類的加載機制有關,所以打算講一下類加載的機制,文中介紹的非常詳細,需要的朋友可以參考下
    2021-05-05

最新評論

海城市| 永川市| 卓资县| 峨边| 榆社县| 海城市| 宁阳县| 正镶白旗| 德化县| 临清市| 精河县| 东兰县| 永寿县| 左贡县| 嘉荫县| 承德县| 大新县| 文成县| 紫阳县| 六盘水市| 呼图壁县| 唐海县| 浠水县| 平遥县| 会理县| 南和县| 阜新市| 蛟河市| 宿松县| 翁牛特旗| 北票市| 额尔古纳市| 陕西省| 顺义区| 墨竹工卡县| 柳州市| 竹山县| 岑巩县| 城市| 商都县| 濮阳县|