`
kanpiaoxue
  • 浏览: 1781887 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

guava中集合(set)的算法和操作

 
阅读更多

 

 

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

 

 

分享到:
评论

相关推荐

    mahout的guava-r09-jar

    1. **数据容器与集合**:Guava提供了强类型的List、Set和Map实现,以及Multiset、Multimap和Table等高级容器,使得数据组织和操作更加灵活和高效。 2. **缓存机制**:Guava的LoadingCache接口可以方便地创建自定义...

    guava-18.jar

    1. **集合框架扩展**:Guava提供了丰富的集合接口和实现,如Multiset(多集)、Multimap(多映射)、SetMultimap(键为集合的映射)和Table(表格结构)。这些集合类增强了Java标准库的功能,使得数据结构的使用更加...

    Guava学习-----弱鸡晋级之路

    这种映射可以用来存储特定类型的对象实例,便于类型安全的查找和操作。 8. **RangeSet**: `RangeSet` 是一组不重叠的区间(Range)的集合。它可以用来表示一个数值集的子集,比如表示某个区间内的数字集合,或者...

    guava collection简介1

    总之,Guava Collections 是 Java 开发者的强大工具,尤其适合那些需要处理复杂数据结构和算法的场景。它通过提供丰富的集合类和工具类,使得代码更简洁、更健壮,提高了代码的可读性和可维护性。如果你正在寻找一种...

    集合框架的使用方法

    通过集合框架,开发者可以方便地存储、管理和操作数据,提高代码的可读性和可维护性。 二、主要接口与实现类 1. 集合(Collection)接口:这是所有单值容器的父接口,包括List和Set子接口。List接口代表有序的、...

    java语言集合框架

    集合框架是Java API中的核心部分,它包括了接口、类和算法,用于组织和操作数据。下面将详细探讨Java集合框架的关键组件和它们在实际开发中的应用。 首先,集合框架的基础接口有`List`、`Set`和`Map`。`List`接口...

    corejava学习(集合)

    在实际开发中,选择合适的集合类型非常重要,需要考虑数据的特性和操作需求。例如,如果需要保持元素的特定顺序,可以选择LinkedList或TreeSet;如果对元素的唯一性有要求,应选择Set而不是List。 源码阅读是提升...

    GSCollections受Smalltalk启发的集合框架

    在Java标准库中,`java.util` 包提供了基本的集合框架,如 List、Set 和 Map。然而,这些集合在某些场景下可能无法满足高性能和复杂操作的需求。GS Collections则弥补了这一空缺,它引入了大量实用的集合操作,如...

    Apress的《Java Collections》

    通过这个API,开发者可以高效地存储、检索和操作数据,实现数据结构和算法的抽象。 在书中,作者首先会介绍Collections的基本概念,包括ArrayList、LinkedList、HashSet、TreeSet和HashMap等基本类型的集合。...

    java面试题目集合!好啊!

    3. **集合框架**:Java集合框架包括List(ArrayList、LinkedList)、Set(HashSet、TreeSet)、Map(HashMap、TreeMap)等接口和实现,面试官会测试你对这些类的使用场景、性能特点以及它们之间的关系。 4. **多...

    java-collections-framework1016

    它为存储和操作数据提供了统一而强大的API,使得开发者能够更高效地管理数据集合。 **核心概念:** - **集合(Collection)**:集合是一个包含多个元素的对象,它可以用来表示一组对象。 - **映射(Map)**:映射...

    google-collect

    此外,它还优化了集合的性能,例如通过使用轻量级数据结构和高效的算法,减少了内存占用并提升了处理速度。 总的来说,"google-collect"或现在的Guava库是Java开发中不可或缺的工具,它提供了许多标准库未包含的...

    java 数据集工具

    这些工具帮助开发者有效地管理和操作各种类型的数据。 1. **集合框架**:Java集合框架是Java API的核心部分,提供了多种数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)。ArrayList和LinkedList是List...

    google-collect-1.0.jar.zip

    在Java中,集合框架是用于存储和操作数据的核心组件,包括接口如List、Set、Map,以及实现这些接口的类,如ArrayList、HashSet和HashMap。 描述中同样提到了"google-collect-1.0.jar.zip",这表明提供的内容是...

    google的collection包

    谷歌的Collection包是Java开发中一个非常重要的工具集,它扩展了Java标准库中的集合框架,为开发者提供了更强大、更高效的数据结构和算法。在谷歌Collection包中,特别是其Guava子库,包含了丰富的数据结构,如...

    googlecollections1.0.rar

    - **Functional Programming**:引入了函数式编程的概念,如Function接口,便于创建和操作无副作用的纯函数。 - **Cache**:提供了一种高效的缓存机制,能够自动管理缓存项的生命周期。 - **Iterables**和**...

    java基于redis限流系统.rar

    Redis限流一般有两种实现方式:一是使用Redis的自增操作(INCR)配合TTL(Time To Live)机制,二是利用Redis的有序集合(Sorted Set)。 1. INCR+TTL方法:当请求到来时,对特定key执行INCR操作,如果返回值超过...

    JAVA软件设计大赛试题.rar

    理解流的分类(如字节流、字符流)和操作,以及缓冲区的概念,是处理数据交换的基础。 9. **JVM原理**:了解Java虚拟机的工作原理,如类加载机制、内存模型(堆、栈、方法区等)、垃圾回收等,对于优化代码性能和...

    wcgw:我的Java语言学习资料库,旨在提高我的算法和文库能力

    学习这部分内容能提升对对象存储和操作的理解。 5. **IO流**: Java的IO流处理涵盖了输入输出操作,包括字节流、字符流、对象流、缓冲流、转换流等。资料库可能包含大量的示例代码,帮助学习者理解和运用IO流进行...

    张孝祥整理Java就业面试题大全

    面试中可能考察这些集合的特点、用途和操作方法。 4. **泛型**:泛型是Java 5引入的新特性,用于提供类型安全,面试中可能会涉及泛型类、泛型方法和通配符的使用。 5. **多线程**:Java提供了Thread类和Runnable...

Global site tag (gtag.js) - Google Analytics