尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

用Java ArrayList实现一个简单的数组去重功能

发布时间:2026/11/1 8:15:42

资讯中心
01
ARTICLE

用Java ArrayList实现一个简单的数组去重功能

用Java ArrayList实现一个简单的数组去重功能
方案1双层循环遍历去重不依赖其他集合纯ArrayList思路创建新的 ArrayList 存放结果遍历原集合每一个元素新集合中不存在该元素才添加自动去重importjava.util.ArrayList;publicclassArrayListDistinct1{publicstaticvoidmain(String[]args){// 原数组包含重复数据ArrayListIntegerlistnewArrayList();list.add(1);list.add(2);list.add(2);list.add(3);list.add(1);list.add(4);list.add(3);System.out.println(去重前list);ArrayListIntegernewListdistinctByLoop(list);System.out.println(去重后newList);}/** * 双层循环去重保留原有顺序 */publicstaticEArrayListEdistinctByLoop(ArrayListEoldList){ArrayListEresultnewArrayList();for(Eitem:oldList){// 新集合没有当前元素才添加if(!result.contains(item)){result.add(item);}}returnresult;}}输出去重前[1, 2, 2, 3, 1, 4, 3] 去重后[1, 2, 3, 4]优点仅使用 ArrayList不引入其他类保留插入顺序缺点contains()底层遍历数据量大性能差 O(n²)方案2借助 HashSet 快速去重性能更高推荐思路Set 天然不允许重复元素中转去重后转回 ArrayListimportjava.util.ArrayList;importjava.util.HashSet;importjava.util.Set;publicclassArrayListDistinct2{publicstaticvoidmain(String[]args){ArrayListStringlistnewArrayList();list.add(苹果);list.add(香蕉);list.add(苹果);list.add(橙子);list.add(香蕉);System.out.println(去重前list);ArrayListStringdistinctListdistinctBySet(list);System.out.println(去重后distinctList);}publicstaticEArrayListEdistinctBySet(ArrayListEoldList){// Set自动去重SetEsetnewHashSet(oldList);// 转回ArrayListreturnnewArrayList(set);}}注意HashSet 会打乱原有元素顺序。如果需要【去重保留顺序】用 LinkedHashSetimportjava.util.ArrayList;importjava.util.LinkedHashSet;importjava.util.Set;publicclassDistinctOrder{publicstaticEArrayListEdistinctKeepOrder(ArrayListEoldList){SetEsetnewLinkedHashSet(oldList);returnnewArrayList(set);}publicstaticvoidmain(String[]args){ArrayListIntegerlistnewArrayList();list.add(5);list.add(3);list.add(5);list.add(1);ArrayListIntegerresdistinctKeepOrder(list);System.out.println(res);// [5, 3, 1] 顺序不变}}方案3Java8 Stream一行代码去重最简写法importjava.util.ArrayList;importjava.util.List;publicclassStreamDistinct{publicstaticvoidmain(String[]args){ArrayListIntegerlistnewArrayList();list.add(2);list.add(2);list.add(7);list.add(7);list.add(9);// distinct() 去重collect转回ArrayListListIntegerdistinctListlist.stream().distinct().toList();System.out.println(distinctList);}}总结对比方式优点缺点双层循环contains只使用ArrayList、有序大数据效率低LinkedHashSet效率高、有序需要导入Set集合Stream distinct代码极简JDK8支持
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。