3ms找出微信「共同好友」,揭秘其背后的技术推手

平台奖励创作,可能会升级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(
            "张君宝","杨过","郭靖",
            "黄蓉","赵敏","周芷若",
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值