`

Guava Collections - Sets

 
阅读更多

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));
	}

}

 

分享到:
评论

相关推荐

    google guava23.5

    - **Immutable Collections**:不可变的集合类,确保一旦创建就不能被修改,提供线程安全。 - **BiMap**:双向映射,允许在键和值之间进行双向查找。 - **Table**:二维表格数据结构,用于存储键-键对的数据。 2...

    google-collections jar包

    Google Collections(Guava)库不仅限于`Maps`模块,还包括`Lists`、`Sets`、`Multisets`、`Iterators`等多个子模块,它们都提供了丰富的功能和优化,使得Java编程更加简洁和高效。在实际开发中,熟练掌握并运用这些...

    google-collections.zip

    总之,Google Collections(现在的 Guava)为 Java 开发者提供了大量实用工具和集合扩展,提高了代码的可读性、效率和安全性。无论是进行简单的数据操作还是设计复杂的系统,这个库都是一把不可或缺的利器。

    java基础 集合-26-Guava开源组件使用(4)

    6. **并发工具**:Guava包含了如Lists.newCopyOnWriteArrayList、Sets.newConcurrentHashSet等线程安全的集合实现,以及CountDownLatch、CyclicBarrier、Semaphore等并发控制工具,为多线程编程提供了便利。...

    Guava教程1使用GoogleCollections,G

    Guava提供了强大的并发工具,如`Cache`用于缓存计算结果,`Lists.synchronizedList()`和`Sets.newConcurrentHashSet()`用于创建线程安全的集合,以及` ListeningExecutorService`来管理异步任务。 7. **预条件检查...

    googlecollections1.0.rar

    - **Collections2**、**Lists**、**Sets**等工具类:提供了许多便利的静态方法,如排序、转换、过滤等。 4. **学习与实践** 学习Google Collections 1.0,开发者可以深入理解如何利用这些高级数据结构和工具来...

    google-collect-1.0.jar.zip

    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-collect

    谷歌集合框架(Google Collections)是谷歌为Java开发者提供的一套强大的集合处理库,它后来演进成为现在的Guava库。这个jar包包含了谷歌对Java集合框架的扩展和增强,提供了更多的数据结构、实用工具类以及函数式...

    estrutura_dados_ifpe_maps_sets

    Map和Set是Java集合框架(Collections Framework)的关键部分,用于存储和操作数据。现在,我们将深入探讨这两种数据结构以及它们在实际编程中的应用。 首先,让我们了解**Set**。Set接口在Java中继承自Collection...

    28个java常用的工具类

    16. **Collections.unmodifiable*()**:创建不可修改的集合视图,如Lists、Sets和Maps。 17. **List.subList()**:获取列表的子列表,不改变原列表。 18. **Stream API**:Java 8引入,用于处理集合数据的函数式...

    java工具类

    例如,Apache Commons Lang的`StringUtils`类提供了更多的字符串处理功能,Guava的`Preconditions`用于参数检查,`Lists`、`Maps`和`Sets`提供了集合操作的便利方法。 5. **IO工具类**: 在`java.io`包中,有许多...

    工作11年总结的常用java工具类,上百种方法,开发中绝对用得到

    2. **Guava**: Google的Guava库提供了大量的Java增强功能,比如`Preconditions` 类用于参数检查,防止空指针异常;`Lists`, `Sets`, `Maps` 提供了丰富的集合操作方法;`Strings` 类提供了一流的字符串处理能力,如 ...

    java计算集合对称差的示例代码

    在 Java 中,可以使用 Guava 库的 symmetricDifference 方法或 Apache Commons Collections 库的 disjunction 方法来计算集合对称差。 使用 Guava 库的 symmetricDifference 方法: Java 代码: ```java Set...

    工具类

    例如,Guava的`Collections2`, `Maps`, `Sets`等类提供了丰富的集合处理功能。 4. **IO流操作**:在处理文件或网络数据时,`FileUtils`, `IOUtils`(Apache Commons IO)等工具类可以帮助读写文件,复制流,关闭...

Global site tag (gtag.js) - Google Analytics