您好,登錄后才能下訂單哦!
這篇文章主要介紹“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>
免責聲明:本站發(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)容。