list的五种去重方法

list的五种去重方法面试中经常被问到的list如何去重,一般是口述,不需要代码体现,这个时候,思维一定要清晰,可以罗列出集中去重的方法,以展现你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固下面,我就将五种方法逐一展现新建一个list数组:Listlist=newArrayList();list.add(26);list.add(39);list.add(5)…

大家好,又见面了,我是你们的朋友全栈君。

面试中经常被问到的list如何去重,一般是口述,不需要代码体现,这个时候,思维一定要清晰,可以罗列出集中去重的方法,以展现你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固 
下面,我就将五种方法逐一展现 
新建一个list数组: 
List list = new ArrayList(); 
list.add(26); 
list.add(39); 
list.add(39); 
list.add(39); 
list.add(39); 
list.add(5); 
list.add(40); 
list.add(39); 
list.add(25); 
System.out.println(list); 
方法一:使用java8新特性stream进行List去重 
List newList = list.stream().distinct().collect(Collectors.toList()); 
System.out.println(“java8新特性stream去重:”+newList); 
list.add(39); 
方法二:双重for循环去重 
for (int i = 0; i < list.size(); i++) { 
for (int j = 0; j < list.size(); j++) { 
if(i!=j&&list.get(i)==list.get(j)) { 
list.remove(list.get(j)); 


上面的方法研究后,确实有点小问题,下面放上优化后的方法(不推荐使用,速度太慢

        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < list.size(); ) {
//                    System.out.println(i+"-"+list.get(i)+"-"+j+"!!!!"+list.get(j));
                if (i != j && list.get(i) == list.get(j)) {
//                    System.out.println(j+":"+list.get(j));
                    list.remove(j);
                } else {
                    j++;
                }
            }
        }

System.out.println(“双重for循环去重:”+list); 
list.add(39); 
方法三:set集合判断去重,不打乱顺序 
Set set1 = new HashSet(); 
List newList1 = new ArrayList(); 
for (Integer integer : list) { 
if(set1.add(integer)) { 
newList1.add(integer); 


System.out.println(“set集合判断去重:”+list); 
list.add(39); 
方法四:遍历后判断赋给另一个list集合 
List newList2 = new ArrayList(); 
for (Integer integer : list) { 
if(!newList2.contains(integer)){ 
newList2.add(integer); 


System.out.println(“赋值新list去重:”+newList2); 
list.add(39); 
方法五:set和list转换去重 
Set set2 = new HashSet(); 
List newList3 = new ArrayList(); 
set2.addAll(list); 
newList3.addAll(set2); 
System.out.println(“set和list转换去重:”+newList3);
——————— 
作者:Trainer2107 
来源:CSDN 
原文:https://blog.csdn.net/Trainer2107/article/details/78571619 
版权声明:本文为博主原创文章,转载请附上博文链接!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141155.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月9日 上午8:40
下一篇 2022年5月9日 上午8:40


相关推荐

  • 日本樱花免费docker部署教程

    点击查看视频教程樱花的注册地址:https://app.arukas.io/注册完登陆创建实例点击查看视频教程镜像选择:qiangweizhang/mysqlserver选择的镜像必须是dockerhub的参考线面信息填写表单增加一个端口映射3306(也是你将要使用的端口)mysql默认端口然后创建实例然后运行使用navicat…

    2022年4月4日
    71
  • linux下 ls -l 命令显示结果每一列代表什么意思

    linux下 ls -l 命令显示结果每一列代表什么意思

    2021年10月15日
    48
  • 如何将Eclipse设置为中文版[通俗易懂]

    如何将Eclipse设置为中文版[通俗易懂]如何将Eclipse设置为中文版我们知道Eclipse一个开放源代码的、基于Java的可扩展开发平台,不管学习还是工作都是一款不错的集成开发环境(IDE),但是对于一些初学者看到Eclipse上

    2022年5月4日
    70
  • mysql中lsm树_LSM树理解

    mysql中lsm树_LSM树理解对比三种引擎的实现 hash 存储引擎 哈希表持久化的实现 可以快速支持增删改查等随机操作 且时间复杂度为 o 1 但是不支持顺序读取扫描 对应的存储系统为 k v 存储系统的实现 b 树存储引擎是 b 树的持久化实现 不仅支持单条记录的增删改查操作 还支持顺序扫描 对应的存储系统就是 mysql lsm 树存储引擎和 b 树存储引擎 一样支持 增删改查 也支持顺序扫描操作 LSM 牺牲了读性能 提高写性能 LSM 的原

    2026年3月18日
    2
  • 俄语输入法键盘_汉字输入法

    俄语输入法键盘_汉字输入法隐马尔科夫模型隐马尔可夫模型(HiddenMarkovModel)是一种统计模型,用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来

    2022年8月1日
    7
  • TLE5012B磁编码器原理及优点,径向充磁磁铁的安装。AS5047、AS5048、AS5600、TLE5012、MA730

    TLE5012B磁编码器原理及优点,径向充磁磁铁的安装。AS5047、AS5048、AS5600、TLE5012、MA730巨磁阻 GMR 磁编码器以其独特的优点 在近两年的产品应用上十分流行 它体积小巧 安装方便 分辨率高 不受灰尘油渍影响 可非接触安装 便于与电机集成一体实现伺服控制 相较于光电编码器 GMR 磁编码器的寿命几乎无限长 没有红外二极管的光衰对寿命造成影响 另外光电编码器内部需要高精度光栅 对生产的安装精度 洁净度 器件质量有严格的要求 而磁编码器在这方面则宽松了很多 只要强磁与芯片的同心度不是太差 间隔不是太远 都能良好的输出信号 本文主要以 TLE5012B MA730 AS5047P D AS50

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号