---
# System prepended metadata

title: Google Guava 工具類 的介紹和使用
tags: [Shannon]

---

# Google Guava 工具類 的介紹和使用
###### tags: `Shannon`

# 工具類?
> 為甚麼有人要做工具類的東西?
- 為了節省開發人員的時間提高效率，像是重複的句子很長又很多，所以把常用的功能封裝起來給他人使用。
- 所以google也做出類似的動作，把一些常用的功能給封裝起來，guava就此誕生!!guava有以下幾個特點
	1. API設計很好
	2. code簡潔簡單
	3. 節省時間 資源 

# Guava裡面有甚麼java項目的核心庫?
1. 集合 `[collections]`
2. 缓存 `[caching]`
3. 原生类型支持 `[primitives support]`
4. 并发库 `[concurrency libraries]`
5. 通用注解 `[common annotations]`
6. 字符串处理 `[string processing]`
7. I/O 等等。

# 如何使用Guava?
- 引入maven denpendency，如果是用在spring就可以在`POM.xml`裡面寫
```xml
'''
<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>20.0</version>
</dependency>
'''
```

# 有哪些方式?
1. 如果你想要將collection都列印出來，但是又不想用for迴圈
```java 
//use java
List<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
String str = "";
for(int i=0; i<list.size(); i++){
	str = str + "-" +list.get(i);
}
//str 为-aa-bb-cc

//use guava
List<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
String result = Joiner.on("-").join(list);
//result为  aa-bb-cc
```

2. 使用splite分開一串String後一一放入陣列中
```java 
//use java
List<String> list = new ArrayList<String>();
String a = "1-2-3-4-5-6";
String[] strs = a.split("-");
for(int i=0; i<strs.length; i++){
	list.add(strs[i]);
}

//use guava
String str = "1-2-3-4-5-6";
List<String> list = Splitter.on("-").splitToList(str);
//list为  [1, 2, 3, 4, 5, 6]
```

其他用法可以參考這裡:
[Google guava工具类的介绍和使用](https://my.oschina.net/u/2551035/blog/802634)