美文网首页JavaIT技术篇
集合去重三境界

集合去重三境界

作者: 非常王不二 | 来源:发表于2020-03-18 13:26 被阅读0次

原文:集合去重三境界

王国维在《人间词话》中说过治学三重境界,想要成大事者会经历三个阶段,而数组去重几个方式也显示出了我们所经历的三个阶段,你在哪个阶段呢?

给定最简单的整型集合

List list = new ArrayList<>(Arrays.asList(2,4,6,7,8,2,4,8));

第一重境界

"昨夜西风凋碧树,独上高楼,望尽天涯路。"

初入猿门,人生目标尚属迷茫,不知前路几何。

这个阶段你应该能想到的就是 使用一个新的List,将原来的内容存入其中,如果存在了就跳过,这样最后新的List中就没有重复的元素了。

List newList = new ArrayList<>();
for(int i=0; i<list.size(); i++){
    if (!newList.contains(list.get(i))){
        newList.add(list.get(i));
    }
}

此种方法的时间复杂度为 O(n^2) , 时间随着集合长度的增加而指数增加。

第二重境界

"衣带渐宽终不悔,为伊消得人憔悴。"

此刻你应该有了追逐的目标,coding虽虐你千百遍,但你仍不悔不弃。

当你学习了更多集合框架,你会发现一个Set接口,它的实现类要求包含的元素不能重复。

Set set = new HashSet(list);
List integers = new ArrayList<Integer>(set);

此种方法的时间复杂度为 O(n) , 时间随着集合长度的增加而线性增加。

第三重境界

"众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。"

历经千百次的磨炼寻觅,突然柳暗花明,这就是升华。

如果你再进一步学习,对JDK8有些了解,那么你一定知道stream,它常用于对集合的操作,提供了非常丰富的API。

list.parallelStream()
   .distinct()
   .collect(Collectors.toList());

此种方式是比较流行的方式,时间复杂度我也不知怎么算了(手动捂脸),但利用lambda表达式书写起来行云流水,让人直叫爽。

image

但它的效率如何呢?

这个要了解一下stream的实现方式了,它底层使用了JDK7提供的forkjoin框架来完成,这个框架能够充分利用计算机的多核。
在多核心的计算机且数据量较大的情况下,效率相对for循环要好很多,但仍然赶不上set方式;
在数据量较小的情况下,stream相对于前面两种方式较差。

所以stream的方式和set来转换方式,可以根据你的要求和喜好来选择

相关文章

  • 集合去重三境界

    原文:集合去重三境界 王国维在《人间词话》中说过治学三重境界,想要成大事者会经历三个阶段,而数组去重几个方式也显示...

  • js算法题

    1.数组去重 方法一:利用嵌套for循环和splice去重 方法二:利用indexOf去重 方法三:利用Set集合...

  • 读书三境界

    王阳明认为,读书有三重境界, 第一重境界是“记得”, 第二重境界是“晓得”, 第三境界重是“明心”。 “记得”只是...

  • 处在第几重境界?

    教育的五重境界: 第一重境界:教知识 第二重境界:教方法 第三重境界:教状态 第四重境界:教人生 第五重境界:教自...

  • 【百日行动】

    读《跃迁》30页 “勤奋的三重境界” 第一重境界:很努力 第二重境界:方法论勤奋 第三重境界:更少目标,战略勤奋 ...

  • 读《理想课堂的三重境界》有感(三)

    理想课堂的三重境界:第一重境界:落实有效教学框架;第二重境界:发掘知识的内在魅力;第三重境界:知识、生活与...

  • 人生下半场,敌人只剩自己,这世间唯一不变的就是变化

    “悦人”、“悦己”、“悦心”是女人的三重境界,能达到第三重“悦心”境界的女人,据说不到1%。 悦人:倾我所有去爱你...

  • 理想课堂三重境界之发掘知识的内在魅力

    理想课堂的三重境界:第一重境界落实有效教学框架;第二重境界发掘知识的内在魅力;第三重境界知识、生活与生命的...

  • 顺势而行 打造育人新课堂的几点思考

    理想课堂的三重境界:第一重境界,落实有效教学的框架;第二重境界,发掘知识这一伟大事物内在的魅力;第三重境界,知识、...

  • 读书卡片 010

    【书中原文】“勤奋的三重境界”: 勤奋的第一重境界:很努力 勤奋的第二重境界:方法论勤奋 勤奋的第三重境界:更少目...

网友评论

    本文标题:集合去重三境界

    本文链接:https://www.haomeiwen.com/subject/etbqyhtx.html