2026/4/18 13:51:06
网站建设
项目流程
网站配置支付宝,平面图制作用什么软件,wordpress主题有广告,石家庄建设总结整理不易#xff0c;如果对你有所帮助#xff0c;不妨动手点个免费的赞哦#xff0c;收藏关注不迷路[比心]~
目录
1. sort() 函数的基本原理
2. sort() 函数的用法
2.1 默认排序#xff08;升序#xff09;
2.2 局部排序
2.2 降序排序(逆序排序#xff09;
2.…总结整理不易如果对你有所帮助不妨动手点个免费的赞哦收藏关注不迷路[比心]~目录1. sort() 函数的基本原理2. sort() 函数的用法2.1 默认排序升序2.2 局部排序2.2 降序排序(逆序排序2.2.1 使用Collections.reverseOrder()方法进行逆序排序2.2.2 使用Comparator.reversed()方法2.2.3 匿名内部类2.2.4 使用Lambda表达式进行逆序排序2.3 自定义对象进行排序2.4 Lambda 表达式简化Comparator的实现2.4.1 基本的Lambda表达式2.4.2 省略类型定义2.4.3 使用静态方法引用2.4.4 使用实例方法引用2.5 多级排序2.6 并行排序在 Java 编程中sort() 函数是一个非常重要且常用的方法用于对数组或集合进行排序操作。本文将深入探讨 sort() 函数的基本原理、以及其在实际应用中的多种用法。1. sort() 函数的基本原理Java中的sort()函数是一个高效的排序算法其具体的实现原理取决于排序的数据类型和大小。在Java 7之前Arrays类使用的是经典的快速排序算法。在Java 7及以后的版本中Arrays类在排序小型数组时使用的是改进后的快速排序算法而在排序大型数组时使用的是归并排序算法。原理详情请看往期一文让你深入理解java中sort() 方法的底层原理Collections.sortArrays.sort_java sort的底层原理-CSDN博客2. sort() 函数的用法在 Java 中sort() 函数可以用于对数组或集合进行排序其用法略有不同。2.1 默认排序升序格式Arrays.sort(array); Collections.sort(list);例//对整型数组进行排序 int[] array {5, 2, 9, 1, 3}; Arrays.sort(array); System.out.println(Arrays.toString(array)); //输出[1, 2, 3, 5, 9] //对字符串数组进行排序 String[] names {John, Alice, Bob, David}; Arrays.sort(names); System.out.println(Arrays.toString(names)); //输出[Alice, Bob, David, John] // 对列表进行排序 ListInteger list new ArrayList(); list.add(5); list.add(2); list.add(9); list.add(1); list.add(3); Collections.sort(list); System.out.println(list); // 输出[1, 2, 3, 5, 9]2.2 局部排序格式Arrays.sort(数组名,start,end);//注意左闭右开[start,end)例int[] array {5, 2, 9, 1, 3}; //对数组的一部分内容进行排序索引从1到4包括1不包括4 Arrays.sort(array, 1, 4); System.out.println(Arrays.toString(array)); //输出[5, 1, 2, 9, 3]2.2 降序排序(逆序排序有时我们需要对数组或集合进行倒序排序可以通过自定义比较器实现2.2.1 使用Collections.reverseOrder()方法进行逆序排序//数组 Integer[] arr {3, 1, 4, 1, 5, 9}; Arrays.sort(arr, Collections.reverseOrder());// 输出[9, 5, 4, 3, 1, 1] Collections.sort(list, nameComparator.reversed()); //集合 ListInteger list Arrays.asList(3, 1, 4, 1, 5, 9); Collections.sort(list, Collections.reverseOrder()); System.out.println(list); // 输出[9, 5, 4, 3, 1, 1]2.2.2 使用Comparator.reversed()方法ListStudent list Student.getStudentList(); ComparatorStudent nameComparator (s1, s2) - s1.getName().compareTo(s2.getName()); Collections.sort(list, nameComparator.reversed());2.2.3 匿名内部类Integer[] arr {8, 9, 5, 2, 3, 6, 1, 0, 7, 4}; Arrays.sort(arr, new ComparatorInteger() { Override public int compare(Integer o1, Integer o2) { return o1 - o2; } });2.2.4 使用Lambda表达式进行逆序排序Integer[] arr {9, 8, 7, 2, 3, 4, 1, 0, 6, 5}; Arrays.sort(arr, (o1, o2) - o2 - o1);2.3 自定义对象进行排序//数组自定义对象排序 Person[] people {new Person(Alice, 25), new Person(Bob, 20), new Person(Charlie, 30)}; ComparatorPerson byName Comparator.comparing(Person::getName);//注Person 类中需有getName()方法 Arrays.sort(people, byName); //按照姓名排序 // 集合自定义对象排序 ListPerson persons new ArrayList(); persons.add(new Person(Alice, 25)); persons.add(new Person(Bob, 30)); persons.add(new Person(David, 20)); ComparatorPerson byName Comparator.comparing(Person::getName); Collections.sort(persons, byName); // 使用 Collections.sort() 对 List 进行排序 //匿名内部类 public static ListPeople compareTest(ListPeople arr) { Collections.sort(arr, new ComparatorPeople() { public int compare(People p1, People p2) { int a p1.age; //比较的是age int b p2.age; return a b ? -1 : a b ? 0 : 1; //当ab返回-1ab返回0ab返回1 } });2.4 Lambda 表达式简化Comparator的实现自从 Java 8 引入了 Lambda 表达式我们可以更加简洁地定义比较器2.4.1 基本的Lambda表达式ComparatorDeveloper byName (Developer o1, Developer o2) - o1.getName().compareTo(o2.getName());这里我们创建了一个Comparator来比较两个Developer对象的名字。2.4.2 省略类型定义humans.sort((h1, h2) - h1.getName().compareTo(h2.getName()));在这个例子中我们不需要指定h1和h2的类型编译器会自动推断。2.4.3 使用静态方法引用humans.sort(Human::compareByNameThenAge);在这里我们使用了Human类的静态方法compareByNameThenAge作为Comparator。2.4.4 使用实例方法引用Collections.sort(humans, Comparator.comparing(Human::getName));2.5 多级排序ListDeveloper listDevs getDevelopers(); ComparatorDeveloper comparator Comparator.comparing(Developer::getAge) .thenComparing(Developer::getName); listDevs.sort(comparator);2.6 并行排序Java 8引入了并行排序。如果你有一个非常大的数组你可以使用Arrays.parallelSort()方法进行排序。这个方法会利用多核处理器的优势将数组分成多个部分然后并行地对每个部分进行排序最后再将结果合并起来。//例1 int[] arr {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}; Arrays.parallelSort(arr); System.out.println(Arrays.toString(arr)); // 输出[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] //例2 ListInteger list new ArrayList(); // 添加大量数据到列表中 list list.parallelStream().sorted().collect(Collectors.toList());说真的这两年看着身边一个个搞Java、C、前端、数据、架构的开始卷大模型挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis稳稳当当过日子。结果GPT、DeepSeek火了之后整条线上的人都开始有点慌了大家都在想“我是不是要学大模型不然这饭碗还能保多久”先给出最直接的答案一定要把现有的技术和大模型结合起来而不是抛弃你们现有技术掌握AI能力的Java工程师比纯Java岗要吃香的多。即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇如何学习AGI大模型作为一名热心肠的互联网老兵我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享