数组去重,你会几种方式? |
您所在的位置:网站首页 › 如何数组去重 › 数组去重,你会几种方式? |
前言 数据去重是项目中经常出现的应用场景,并且面试中可能也会问到,那么你会几种数组去重方式呢? 学习更多,请点击:https://www.bilibili.com/video/BV13V411n7wJ https://www.bilibili.com/video/BV1i64y1m7QR https://www.bilibili.com/video/BV1jK4y1o7QM https://www.bilibili.com/video/BV1dy4y1W7Db https://www.bilibili.com/video/BV1Qb4y1D75J 实战使用额外空间去重![]() 优点:实现简单、并且在循环判断过程中可以增加额外操作 缺点:需要一个额外空间大小的数组,浪费空间,多行代码实现 学习更多,请点击:https://www.bilibili.com/video/BV13V411n7wJ https://www.bilibili.com/video/BV1i64y1m7QR https://www.bilibili.com/video/BV1jK4y1o7QM https://www.bilibili.com/video/BV1dy4y1W7Db https://www.bilibili.com/video/BV1Qb4y1D75J Set集合自动去重![]() ![]() 既然这么好用,那distinct是通过什么去重的呢?如果是引用类型,是通过地址去重还是通过某些字段去重呢? distinct去重失效示例代码 ![]() 学习更多,请点击:https://www.bilibili.com/video/BV13V411n7wJ https://www.bilibili.com/video/BV1i64y1m7QR https://www.bilibili.com/video/BV1jK4y1o7QM https://www.bilibili.com/video/BV1dy4y1W7Db https://www.bilibili.com/video/BV1Qb4y1D75J ![]() 结果:使用自定义对象distinct无法去重,难道distinct无法作用引用类型吗?但是刚才的String也是引用类型,但是也可以去重。自定义的对象Employee和String有什么区别吗?没错,就是hashcode()和equals()方法,String已经重写了这两个方法,自定义的Employee没有重写这两个方法。 学习更多,请点击:https://www.bilibili.com/video/BV13V411n7wJ https://www.bilibili.com/video/BV1i64y1m7QR https://www.bilibili.com/video/BV1jK4y1o7QM https://www.bilibili.com/video/BV1dy4y1W7Db https://www.bilibili.com/video/BV1Qb4y1D75J 注意:只要是涉及Map和Set这种去重的集合,或者Java8的distinct去重,都是通过hashcode()和equals来作为数据去重的依据,所以要注意重写这两个方法 ![]() ![]() 无论使用Set集合去重还是使用Java8的新特性stream流的distinct去重,都是通过hashcode()和equals()自定义的策略进行去重。 学习更多,请点击:https://www.bilibili.com/video/BV13V411n7wJ https://www.bilibili.com/video/BV1i64y1m7QR https://www.bilibili.com/video/BV1jK4y1o7QM https://www.bilibili.com/video/BV1dy4y1W7Db https://www.bilibili.com/video/BV1Qb4y1D75J 作者:唐宋xy链接:https://juejin.cn/post/6954747083525980168来源:掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |