天天看點

Java兩大工具庫:Commons和Guava(3)

作者:湘王說

您好,我是湘王,這是我的頭條号「湘王說」。值此新春佳節,我給您拜年啦~祝您在新的一年中所求皆所願,所行皆坦途,展宏“兔”,有錢“兔”,多喜樂,常安甯!

雖然Apache Commons提供了專門的Commons-Collections來封裝集合操作,但Google Guava更為強大,并且已經是事實上的集合操作擴充類了。這一點從mvnrepository.com上的引用資料(截止2023-01-27)就可以看出來:

guava 33,492 usages

commons-collections4 3,905 usages

commons-collections 6,355 usages

當然,也可以混用commons-collections4和guava。

引入依賴:

<dependency>

<groupId>com.google.guava</groupId>

<artifactId>guava</artifactId>

<version>30.0-jre</version>

</dependency>

Guava和Commons-Collections最大的不同應該是在建立集合這一塊了:

Java兩大工具庫:Commons和Guava(3)

Guava擴充了集合的「類型」,它可以這麼做:

Java兩大工具庫:Commons和Guava(3)

Guava也可以很友善地将集合轉換成String:

Java兩大工具庫:Commons和Guava(3)
Java兩大工具庫:Commons和Guava(3)

Guava用于過濾集合元素,操作起來也不麻煩:

Java兩大工具庫:Commons和Guava(3)

Map集合的交、并、差:

Java兩大工具庫:Commons和Guava(3)

Set集合的交、并、差:

Java兩大工具庫:Commons和Guava(3)

最後,Guava基于Comparator實作了排序器Ordering,它可以用來為建構複雜的比較器,以完成集合排序的功能。先建立使用者實體類:

/**

* 使用者實體類

*

* @author 湘王

*/

public class User {

private String name;

private Integer age;

public User() {

}

public User(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

@Override

public String toString() {

return name;

}

}

然後再基于Ordering<User>排序:

Java兩大工具庫:Commons和Guava(3)

節日期間,您仍然可以随時咨詢技術、産品、營運和管理相關問題,請關注後留言。歡迎騷擾,不勝榮幸~再次祝您兔年吉祥,萬事勝意!