zoukankan      html  css  js  c++  java
  • Set的交集、差集踩坑记录

    项目中我用到了Set的retainAll和removeAll两个方法取差集和交集。

    用法网上都有,我也不展示了。

    但是因为我是急着用,直接就照着写了,没想到出大问题了。

    因为我的set是一个map的keySet()方法返回的,然后刚好上面的那两个方法

    都是会对源数据进行操作的,比如说

    Map<String, String> map;(十条数据)
    Set<String> keys= map.keySet();(十条数据)
    Set<String> a ;(五条数据)
    执行:keys.removeAll(a);

    此时map就只剩下五条数据了,这就有点坑了。

    所以Set的retainAll和removeAll一定要慎用,如果不想改变源数据的话,可以用这个

    (com.google.common.collect)

    我们现在用的是这个集合工具,还挺方便的。

    因此,用它的话,取交集差集就不用担心影响到源数据了,因为它没有动源数据。

    差集

    difference()函数返回两个集合的差集,即返回的在第一个集合但不在第二个集合中的元素

    Sets.difference(set1, set2);

    交集:

    intersection()方法用于返回两个或更多集合中都包含的元素,即交集。

    Sets.intersection(set1,set2);

    总结:出现这种bug是我对api不熟练的原因,所幸失败是成功之母,这次踩坑了,以后就会记住了。

  • 相关阅读:
    适配器
    装饰器
    getOwnPropertyDescriptor
    发布订阅
    策略模式
    window.requestAnimationFrame() 和 window.cancelAnimationFrame()
    L1-056 猜数字
    L1-055 谁是赢家
    L1-054 福到了
    L1-053 电子汪
  • 原文地址:https://www.cnblogs.com/yellowgg/p/11872069.html
Copyright © 2011-2022 走看看