ArrayList去重及排序
List去重
方法1:set集合去重,不打乱顺序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | List<String> list = new ArrayList<String>(); list.add( "aaa" ); list.add( "bbb" ); list.add( "aaa" ); list.add( "aba" ); list.add( "aaa" ); Set<String> set = new HashSet<String>(); List<String> newList = new ArrayList<String>(); for (String s: list) { if (set.add(s)) { newList.add(s); } } System.out.println( "去重后的集合: " + newList); |
方法2:遍历后判断赋给另一个list集合
1 2 3 4 5 6 7 | List<String> newList = new ArrayList<String>(); for (String s : list) { if (!newList.contains(s)) { newList.add(s); } } System.out.println( "去重后的集合: " + newList); |
方法3:set去重
1 2 3 4 5 | Set<String> set = new HashSet<String>(); List<String> newList = new ArrayList<String>(); set.addAll(list); newList.addAll(set); System.out.println( "去重后的集合: " + newList); |
方法4:set去重(代码缩减为一行)
1 2 | List<String> newList = new ArrayList<String>( new HashSet<String>(list)); System.out.println( "去重后的集合: " + newList); |
方法5:用JDK1.8 Stream中对List进行去重:list.stream().distinct();
1 2 3 4 5 6 | List<String> a = new ArrayList<> (); a.add( "a" ); a.add( "b" ); a.add( "b" ); List list=(List) a.stream().distinct().collect(Collectors.toList()); System.out.println(list); |
List排序
使用Collections工具类的sort(List<T> list, Comparator<? super T> c)方法对List集合进行自定义排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @Test public void listCustomSort() { List<Person> list = new ArrayList<Person>(); Person p1 = new Person( "1" , "p1" , 12 ); Person p2 = new Person( "2" , "p2" , 9 ); Person p3 = new Person( "3" , "p3" , 13 ); Person p4 = new Person( "4" , "p4" , 9 ); list.add(p1); list.add(p2); list.add(p3); list.add(p4); System.out.println(list); System.out.println( "------------------" ); Collections.sort(list, new Comparator<Person>() { // 按年龄从大到小排序; //compareto就是比较两个数据的大小关系 大于0表示前一个数据比后一个数据大, 0表示相等,小于0表示第一个数据小于第二个数 @Override public int compare(Person p1, Person p2) { return p1.getAge() == p2.getAge() ? 0 : (p1.getAge() < p2.getAge() ? 1 : - 1 ); } }); System.out.println(list); } |
now ,fight for future
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程