平台奖励创作,可能会升级VIP文章,可以移步我的公众号:【编程朝花夕拾】,且可获取首发内容。
1、引言
在微信里,关注了某个公众号或者进了某个群,经常会显示你有几个共同的朋友。如图:
作为一个技术出身的人,必然要探究一下其背后技术。如果是自己去实现应该怎么实现呢?
2、抽丝剥茧
我们要探究两个圈子的共同的朋友,首先我们得有两个圈子,以上面的关注的公众号编程朝花夕拾为例。一个是我自己的朋友圈子,另一个去圈子则是关注这个公众号的圈子,共同的朋友就是两个圈子共同的朋友。
使用数学思想就可以将两个圈子抽象成集合(A,B),朋友抽象成集合中的元素。公共的朋友就是两个集合的交集(A ∩ B)。
至此,就演变成两个集合的运算了。
3、Java中的集合运算
集合的运算我们需要借助apache
的工具类,maven以来如下:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>${latest.version}</version>
</dependency>
集合的交集(A∩B)
两个集合都有的元素:
@Test
void contextLoads() {
// 我的朋友圈
List<String> myFriends = List.of(
"张君宝","杨过","郭靖",
"黄蓉","赵敏","周芷若",