這篇文章主要介紹“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("參數不能為空");
// }
// Preconditions.checkNotNull(param,"參數不能為空");
// 第一個expression:布爾值的表達式,true:校驗通過,不拋異常;false:拋異常
Preconditions.checkArgument(param != null,"參數不能為空");
}
/**
* 不可變集合
*/
@Test
public void test7() {
List<String> list = new ArrayList<>();
list.add("aa");
// 把list放到了緩存里面
// 怎么強制約束別人不能改我的list?
ImmutableList<Object> immutableList = ImmutableList.builder().add("aa").build();
// 把immutableList放到緩存中,如果執行add操作會報錯:UnsupportedOperationException
// immutableList.add("bbb");
List<String> jdkUnmodifiableList = Collections.unmodifiableList(list);
// 如果執行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"));
// 轉化成jdk原生api實現的數據結構
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()+",個數:"+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");
// 提供集合的快速創建方式
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);
}
}
/**
* 下劃線和駝峰互轉
* student_name
* studentName
*/
@Test
public void test2() {
String str = "student_name";
// 下劃線轉駝峰 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));
// 駝峰轉下劃線
str = "studentName";
// 結果: student_name
System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, str));
}
/**
* Joiner:把集合(或數組或可變參數)通過指定的分隔符連接成字符串
* Splitter:通過指定的分隔符把字符串轉為集合
*/
@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中實現這類需求也比較方便
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);
}
}到此,關于“guava如何使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。