溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

guava如何使用

發(fā)布時間:2022-10-17 13:52:23 來源:億速云 閱讀:155 作者:iii 欄目:編程語言

這篇文章主要介紹“guava如何使用”,在日常操作中,相信很多人在guava如何使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”guava如何使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

  • 引入依賴

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>29.0-jre</version>
</dependency>
  • 代碼案例

import com.google.common.base.CaseFormat;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import com.google.common.collect.*;
import com.google.common.primitives.Floats;
import com.google.common.primitives.Ints;
import com.google.common.primitives.Longs;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class GuavaTest {

    @Test
    public void test8() {
        String param = null;
//        if (param == null) {
//            throw new RuntimeException("參數(shù)不能為空");
//        }
//        Preconditions.checkNotNull(param,"參數(shù)不能為空");
        // 第一個expression:布爾值的表達式,true:校驗通過,不拋異常;false:拋異常
        Preconditions.checkArgument(param != null,"參數(shù)不能為空");
    }

    /**
     * 不可變集合
     */
    @Test
    public void test7() {
        List<String> list = new ArrayList<>();
        list.add("aa");
        // 把list放到了緩存里面
        // 怎么強制約束別人不能改我的list?
        ImmutableList<Object> immutableList = ImmutableList.builder().add("aa").build();
        // 把immutableList放到緩存中,如果執(zhí)行add操作會報錯:UnsupportedOperationException
//        immutableList.add("bbb");

        List<String> jdkUnmodifiableList = Collections.unmodifiableList(list);
        // 如果執(zhí)行add操作會報錯:UnsupportedOperationException
//        jdkUnmodifiableList.add("ccc");
        list.add("ccc");
        System.out.println(jdkUnmodifiableList);
    }

    /**
     * HashMultimap用來替代jdk原生的Map<String,Collection<String>> map;
     */
    @Test
    public void test6() {
        Multimap<String,String> multimap = HashMultimap.create();
        multimap.put("a","1");
        multimap.put("a","2");
        multimap.put("a","3");
        Collection<String> aValues = multimap.get("a");
        System.out.println(aValues);

        // 是否包含key=a,value=1的entry
        System.out.println(multimap.containsEntry("a", "4"));
        // 轉(zhuǎn)化成jdk原生api實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)
        Map<String, Collection<String>> jdkMap = multimap.asMap();
        System.out.println(jdkMap);
    }

    /**
     * Multiset
     * list:元素可重復的有序集合
     * set:元素不可重復的無序集合
     */
    @Test
    public void test5() {
        Multiset<String> multiset =  HashMultiset.create();
        multiset.add("a");
        multiset.add("b");
        multiset.add("c");
        multiset.add("a");
        System.out.println(multiset);
        Set<Multiset.Entry<String>> entries = multiset.entrySet();
        System.out.println(entries);// [a x 2, b, c]
        for (Multiset.Entry<String> entry : entries) {
            System.out.println("元素:"+entry.getElement()+",個數(shù):"+entry.getCount());
        }

        Set<String> elementSet = multiset.elementSet();
        System.out.println(elementSet);// [a, b, c]
        for (String ele : elementSet) {
            System.out.println("集合里面的元素:"+ele);
        }
    }

    /**
     * Ints
     * Longs
     * Floats
     * ...
     */
    @Test
    public void test4() {
        List<Integer> integers = Ints.asList(1, 2, 3);
        System.out.println(integers);
    }

    /**
     * Lists的用法,另有Sets、Maps
     */
    @Test
    public void test3() {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        // 提供集合的快速創(chuàng)建方式
        ArrayList<String> list2 = Lists.newArrayList("a", "b", "c");
        /*
        要求你傳ids,一次最多傳2個
         */
        // 把list2分成小的集合,小的集合大小是size
//        list2.subList() // 太麻煩
        List<List<String>> partition = Lists.partition(list2, 2);
        System.out.println(partition);
        for (List<String> ids : partition) {
//            api(ids);
        }
    }

    /**
     * 下劃線和駝峰互轉(zhuǎn)
     * student_name
     * studentName
     */
    @Test
    public void test2() {
        String str = "student_name";
        // 下劃線轉(zhuǎn)駝峰 CAMEL:駱駝
        // studentName
        System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, str));
        // StudentName
        System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, str));

        // 駝峰轉(zhuǎn)下劃線
        str = "studentName";
        // 結(jié)果: student_name
        System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, str));
    }

    /**
     * Joiner:把集合(或數(shù)組或可變參數(shù))通過指定的分隔符連接成字符串
     * Splitter:通過指定的分隔符把字符串轉(zhuǎn)為集合
     */
    @Test
    public void test1() {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add(null);

        Joiner joiner = Joiner.on(",")
                // 忽略null
//                .skipNulls()
                .useForNull("這是null的替代物")
                ;
        System.out.println(joiner.join(list));// a,b,c
        // jdk8中實現(xiàn)這類需求也比較方便
        System.out.println(list.stream().filter(StringUtils::isNotBlank)
                .collect(Collectors.joining(",")));

        String str = "a,b,\"\",,  c  ,";
        // on:指定字符串的分隔符
        Splitter splitter = Splitter.on(",")
                // 過濾掉空白的字符串(不包括"")
                .omitEmptyStrings()
                // 去除每個元素的前后空格
                .trimResults()
                ;
        Iterable<String> iterable = splitter.split(str);
        System.out.println(iterable);
        List<String> splitToList = splitter.splitToList(str);
        System.out.println(splitToList);

    }

}

到此,關(guān)于“guava如何使用”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI