ListUtils针对list的交集(retainAll)、差集(subtract)使用

本文介绍了ListUtils工具类中如何进行list的交集(retainAll)和差集(subtract)操作。详细分析了源码,指出在差集操作中,如果list2有重复元素,只会清除一个,而list1中未被移除的元素即为差集结果。
摘要由CSDN通过智能技术生成

maven依赖

<dependency>
  <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.1</version>
</dependency>

<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>27.0-jre</version>
</dependency>

样例代码

        List<String> list1 = Lists.newArrayList("a", "b", "c");
		List
### 回答1: `set.retainAll()` 是 Java 中 Set 接口的一个方法,它可以用来保留 set 中包含在指定 collection 中的元素,也就是说,只保留 set 和 collection 中都有的元素,其它元素将被删除。它的语法如下: ```java boolean retainAll(Collection<?> c) ``` 其中,参数 `c` 是指定的 collection。 这个方法会返回一个布尔值,表示该操作是否改变了原始 set。如果 set 发生了变化,则返回 true;否则返回 false。 ### 回答2: set.retainAll()是Java中Set接口的一个方法,用于保留Set中与另一个集合相同的元素,即移除Set中与另一个集合不同的元素。 具体使用方法是,调用retainAll()方法并传入另一个集合作为参数,该方法会返回一个布尔值,表示Set是否发生了改变。如果Set发生了改变,说明Set中至少有一个元素被移除;如果Set没有发生改变,则说明Set中的元素都存在于另一个集合中。 例如,假设有两个Set集合:setA={1, 2, 3, 4, 5}和setB={3, 4, 5, 6, 7},我们调用setA.retainAll(setB)后,setA会变为{3, 4, 5},因为这些元素既存在于setA中,也存在于setB中。 使用retainAll()方法可以很方便地对两个Set集合进行交集运算,只保留相同的元素。这在实际开发中经常遇到,比如在两个集合中找出相同的数据项,或者过滤掉不需要的数据项。 需要注意的是,retainAll()方法会修改原始Set集合,如果不希望修改原始Set,可以先对原始集合进行备份再调用该方法。 总之,set.retainAll()方法是用于保留Set中与另一个集合相同的元素,是对两个Set集合进行交集运算的便捷方法。 ### 回答3: set.retainAll() 方法用于保留 set 中那些在指定集合中也存在的元素,而将其他元素删除。 该方法的使用格式为:set.retainAll(Collection c) 其中,set 表示要进行操作的 set 集合,Collection c 表示要进行比较的集合。 具体操作为,将 set 集合中与 c 集合相同的元素保留,其他元素删除。这就相当于求 set 集合与 c 集合的交集。 实际操作中,set.retainAll() 方法会修改原始的 set 集合,将不属于交集的元素删除。同时,该方法返回一个布尔值,用来表示 set 集合是否发生了改变。 如果 set 集合发生了改变,则返回 true;如果 set 集合没有发生改变,则返回 false。 需要注意的是,set.retainAll() 方法对 set 集合元素的顺序没有保证,仅保证了将集合中不属于交集的元素删除。 使用 set.retainAll() 方法可以方便地对两个集合进行交集运算。例如,若有集合 A {1, 2, 3, 4, 5} 和集合 B {4, 5, 6, 7, 8},则 A.retainAll(B) 的结果为 {4, 5}。 总结来说,set.retainAll() 方法是用来求两个集合的交集,将 set 集合中与指定集合不相同的元素删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值