static void intersection() { Set<Integer> set1 = Sets.newHashSet(1, 2); Set<Integer> set2 = Sets.newHashSet(2, 3); Set<Integer> intersectionSet = Sets.newHashSet(); Set<Integer> unionSet = Sets.newHashSet(); Set<Integer> differenceSet1AndSet2 = Sets.newHashSet(); Set<Integer> differenceSet2AndSet1 = Sets.newHashSet(); Set<Integer> symmetricDifferenceSet = Sets.newHashSet(); Sets.intersection(set1, set2).copyInto(intersectionSet); Sets.union(set1, set2).copyInto(unionSet); Sets.difference(set1, set2).copyInto(differenceSet1AndSet2); Sets.difference(set2, set1).copyInto(differenceSet2AndSet1); Sets.symmetricDifference(set1, set2).copyInto(symmetricDifferenceSet); Set<List<Integer>> cartesianProduct = Sets.cartesianProduct(set1, set2); Set<Set<Integer>> powerSet = Sets.powerSet(set1); Set<Set<Integer>> combinationsSet = Sets.combinations(unionSet, 2); // output System.out.println(String.format("set1:%s", set1)); // set1:[1, 2] System.out.println(String.format("set2:%s", set2)); // set2:[2, 3] System.out.println(String.format("intersectionSet:%s", intersectionSet)); // intersectionSet:[2] System.out.println(String.format("unionSet:%s", unionSet)); // unionSet:[1, 2, 3] System.out.println(String.format("differenceSet1AndSet2:%s", differenceSet1AndSet2)); // differenceSet1AndSet2:[1] System.out.println(String.format("differenceSet2AndSet1:%s", differenceSet2AndSet1)); // differenceSet2AndSet1:[3] System.out.println(String.format("symmetricDifferenceSet:%s", symmetricDifferenceSet)); // symmetricDifferenceSet:[1, 3] System.out.println(String.format("cartesianProduct:%s", cartesianProduct)); // cartesianProduct:[[1, 2], [1, 3], [2, 2], [2, 3]] System.out.println(String.format("powerSet:%s", powerSet.stream().map(s -> { // powerSet:[[], [1], [2], [1, 2]] return s.toString(); }).collect(Collectors.toList()))); System.out.println(String.format("combinationsSet:%s", combinationsSet.stream().map(s -> { // combinationsSet:[[1, 2], [1, 3], [2, 3]] return s.toString(); }).collect(Collectors.toList()))); }
相关推荐
1. **数据容器与集合**:Guava提供了强类型的List、Set和Map实现,以及Multiset、Multimap和Table等高级容器,使得数据组织和操作更加灵活和高效。 2. **缓存机制**:Guava的LoadingCache接口可以方便地创建自定义...
1. **集合框架扩展**:Guava提供了丰富的集合接口和实现,如Multiset(多集)、Multimap(多映射)、SetMultimap(键为集合的映射)和Table(表格结构)。这些集合类增强了Java标准库的功能,使得数据结构的使用更加...
这种映射可以用来存储特定类型的对象实例,便于类型安全的查找和操作。 8. **RangeSet**: `RangeSet` 是一组不重叠的区间(Range)的集合。它可以用来表示一个数值集的子集,比如表示某个区间内的数字集合,或者...
总之,Guava Collections 是 Java 开发者的强大工具,尤其适合那些需要处理复杂数据结构和算法的场景。它通过提供丰富的集合类和工具类,使得代码更简洁、更健壮,提高了代码的可读性和可维护性。如果你正在寻找一种...
通过集合框架,开发者可以方便地存储、管理和操作数据,提高代码的可读性和可维护性。 二、主要接口与实现类 1. 集合(Collection)接口:这是所有单值容器的父接口,包括List和Set子接口。List接口代表有序的、...
集合框架是Java API中的核心部分,它包括了接口、类和算法,用于组织和操作数据。下面将详细探讨Java集合框架的关键组件和它们在实际开发中的应用。 首先,集合框架的基础接口有`List`、`Set`和`Map`。`List`接口...
在实际开发中,选择合适的集合类型非常重要,需要考虑数据的特性和操作需求。例如,如果需要保持元素的特定顺序,可以选择LinkedList或TreeSet;如果对元素的唯一性有要求,应选择Set而不是List。 源码阅读是提升...
在Java标准库中,`java.util` 包提供了基本的集合框架,如 List、Set 和 Map。然而,这些集合在某些场景下可能无法满足高性能和复杂操作的需求。GS Collections则弥补了这一空缺,它引入了大量实用的集合操作,如...
通过这个API,开发者可以高效地存储、检索和操作数据,实现数据结构和算法的抽象。 在书中,作者首先会介绍Collections的基本概念,包括ArrayList、LinkedList、HashSet、TreeSet和HashMap等基本类型的集合。...
3. **集合框架**:Java集合框架包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)、Map(HashMap、TreeMap)等接口和实现,面试官会测试你对这些类的使用场景、性能特点以及它们之间的关系。 4. **多...
它为存储和操作数据提供了统一而强大的API,使得开发者能够更高效地管理数据集合。 **核心概念:** - **集合(Collection)**:集合是一个包含多个元素的对象,它可以用来表示一组对象。 - **映射(Map)**:映射...
此外,它还优化了集合的性能,例如通过使用轻量级数据结构和高效的算法,减少了内存占用并提升了处理速度。 总的来说,"google-collect"或现在的Guava库是Java开发中不可或缺的工具,它提供了许多标准库未包含的...
这些工具帮助开发者有效地管理和操作各种类型的数据。 1. **集合框架**:Java集合框架是Java API的核心部分,提供了多种数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)。ArrayList和LinkedList是List...
在Java中,集合框架是用于存储和操作数据的核心组件,包括接口如List、Set、Map,以及实现这些接口的类,如ArrayList、HashSet和HashMap。 描述中同样提到了"google-collect-1.0.jar.zip",这表明提供的内容是...
谷歌的Collection包是Java开发中一个非常重要的工具集,它扩展了Java标准库中的集合框架,为开发者提供了更强大、更高效的数据结构和算法。在谷歌Collection包中,特别是其Guava子库,包含了丰富的数据结构,如...
- **Functional Programming**:引入了函数式编程的概念,如Function接口,便于创建和操作无副作用的纯函数。 - **Cache**:提供了一种高效的缓存机制,能够自动管理缓存项的生命周期。 - **Iterables**和**...
Redis限流一般有两种实现方式:一是使用Redis的自增操作(INCR)配合TTL(Time To Live)机制,二是利用Redis的有序集合(Sorted Set)。 1. INCR+TTL方法:当请求到来时,对特定key执行INCR操作,如果返回值超过...
理解流的分类(如字节流、字符流)和操作,以及缓冲区的概念,是处理数据交换的基础。 9. **JVM原理**:了解Java虚拟机的工作原理,如类加载机制、内存模型(堆、栈、方法区等)、垃圾回收等,对于优化代码性能和...
学习这部分内容能提升对对象存储和操作的理解。 5. **IO流**: Java的IO流处理涵盖了输入输出操作,包括字节流、字符流、对象流、缓冲流、转换流等。资料库可能包含大量的示例代码,帮助学习者理解和运用IO流进行...
面试中可能考察这些集合的特点、用途和操作方法。 4. **泛型**:泛型是Java 5引入的新特性,用于提供类型安全,面试中可能会涉及泛型类、泛型方法和通配符的使用。 5. **多线程**:Java提供了Thread类和Runnable...