1.Maven Dependency
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fool.guava</groupId> <artifactId>guava</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>guava</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project>
2. SetTest.java
package org.fool.guava.collections.set; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import java.util.Set; import org.junit.Test; import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; public class SetTest { @Test public void testDifference() { Set<String> s1 = Sets.newHashSet("1", "2", "3"); Set<String> s2 = Sets.newHashSet(); s2.add("2"); s2.add("3"); s2.add("4"); s2.add("5"); SetView<String> diff = Sets.difference(s1, s2); diff.forEach(p -> System.out.println(p)); // return 1 System.out.println("----------"); diff = Sets.difference(s2, s1); diff.forEach(p -> System.out.println(p)); // return 4 5 } @Test public void testSymmetricDifference() { Set<String> s1 = Sets.newHashSet("1", "2", "3"); Set<String> s2 = Sets.newHashSet(); s2.add("2"); s2.add("3"); s2.add("4"); s2.add("5"); SetView<String> symmetricDiff = Sets.symmetricDifference(s1, s2); symmetricDiff.forEach(p -> System.out.println(p)); // return 1 4 5 } @Test public void testIntersection() { Set<String> s1 = Sets.newHashSet("1", "2", "3"); Set<String> s2 = Sets.newHashSet("3", "2", "4"); SetView<String> sv = Sets.intersection(s1, s2); assertThat(sv.size() == 2 && sv.contains("2") && sv.contains("3"), equalTo(true)); sv.forEach(p -> System.out.println(p)); } @Test public void testUnion() { Set<String> s1 = Sets.newHashSet("1", "2", "3"); Set<String> s2 = Sets.newHashSet("3", "2", "4"); SetView<String> sv = Sets.union(s1, s2); assertThat(sv.size() == 4 && sv.contains("3") && sv.contains("2") && sv.contains("4") && sv.contains("1"), equalTo(true)); sv.forEach(p -> System.out.println(p)); } }
相关推荐
- **Immutable Collections**:不可变的集合类,确保一旦创建就不能被修改,提供线程安全。 - **BiMap**:双向映射,允许在键和值之间进行双向查找。 - **Table**:二维表格数据结构,用于存储键-键对的数据。 2...
Google Collections(Guava)库不仅限于`Maps`模块,还包括`Lists`、`Sets`、`Multisets`、`Iterators`等多个子模块,它们都提供了丰富的功能和优化,使得Java编程更加简洁和高效。在实际开发中,熟练掌握并运用这些...
总之,Google Collections(现在的 Guava)为 Java 开发者提供了大量实用工具和集合扩展,提高了代码的可读性、效率和安全性。无论是进行简单的数据操作还是设计复杂的系统,这个库都是一把不可或缺的利器。
6. **并发工具**:Guava包含了如Lists.newCopyOnWriteArrayList、Sets.newConcurrentHashSet等线程安全的集合实现,以及CountDownLatch、CyclicBarrier、Semaphore等并发控制工具,为多线程编程提供了便利。...
Guava提供了强大的并发工具,如`Cache`用于缓存计算结果,`Lists.synchronizedList()`和`Sets.newConcurrentHashSet()`用于创建线程安全的集合,以及` ListeningExecutorService`来管理异步任务。 7. **预条件检查...
- **Collections2**、**Lists**、**Sets**等工具类:提供了许多便利的静态方法,如排序、转换、过滤等。 4. **学习与实践** 学习Google Collections 1.0,开发者可以深入理解如何利用这些高级数据结构和工具来...
Google Collections Library在2007年首次发布,后来发展成为Apache Commons Lang的子项目,最终演变为现在的Guava库,它是Google Java开发工具包的一部分。 在压缩包子文件的文件名称列表中,我们看到"google-...
- `Guava` 库中的 `Collections2`, `Lists`, `Sets`, `Multisets` 等:Google 的 Guava 库提供了丰富的集合操作和扩展,支持更复杂的集合操作。 4. **IO流工具类**: - `FileUtils`(Apache Commons IO):提供了...
谷歌集合框架(Google Collections)是谷歌为Java开发者提供的一套强大的集合处理库,它后来演进成为现在的Guava库。这个jar包包含了谷歌对Java集合框架的扩展和增强,提供了更多的数据结构、实用工具类以及函数式...
Map和Set是Java集合框架(Collections Framework)的关键部分,用于存储和操作数据。现在,我们将深入探讨这两种数据结构以及它们在实际编程中的应用。 首先,让我们了解**Set**。Set接口在Java中继承自Collection...
16. **Collections.unmodifiable*()**:创建不可修改的集合视图,如Lists、Sets和Maps。 17. **List.subList()**:获取列表的子列表,不改变原列表。 18. **Stream API**:Java 8引入,用于处理集合数据的函数式...
例如,Apache Commons Lang的`StringUtils`类提供了更多的字符串处理功能,Guava的`Preconditions`用于参数检查,`Lists`、`Maps`和`Sets`提供了集合操作的便利方法。 5. **IO工具类**: 在`java.io`包中,有许多...
2. **Guava**: Google的Guava库提供了大量的Java增强功能,比如`Preconditions` 类用于参数检查,防止空指针异常;`Lists`, `Sets`, `Maps` 提供了丰富的集合操作方法;`Strings` 类提供了一流的字符串处理能力,如 ...
在 Java 中,可以使用 Guava 库的 symmetricDifference 方法或 Apache Commons Collections 库的 disjunction 方法来计算集合对称差。 使用 Guava 库的 symmetricDifference 方法: Java 代码: ```java Set...
例如,Guava的`Collections2`, `Maps`, `Sets`等类提供了丰富的集合处理功能。 4. **IO流操作**:在处理文件或网络数据时,`FileUtils`, `IOUtils`(Apache Commons IO)等工具类可以帮助读写文件,复制流,关闭...