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

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)淮安免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
引入依賴
<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:布爾值的表達(dá)式,true:校驗通過,不拋異常;false:拋異常
Preconditions.checkArgument(param != null,"參數(shù)不能為空");
}
/**
* 不可變集合
*/
@Test
public void test7() {
List<String> list = new ArrayList<>();
list.add("aa");
// 把list放到了緩存里面
// 怎么強(qiáng)制約束別人不能改我的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:元素可重復(fù)的有序集合
* set:元素不可重復(fù)的無序集合
*/
@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如何使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
當(dāng)前標(biāo)題:guava如何使用
當(dāng)前網(wǎng)址:http://www.chinadenli.net/article28/iieicp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站維護(hù)、網(wǎng)站內(nèi)鏈、全網(wǎng)營銷推廣、品牌網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)