Java编程技巧:列表排序

python列表基本操作之排序 博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。 目录一、背景二、增加元素1、append()方法2、extend()方法三、增加元素1、insert()方法四、查找计数元素1、index()方法2、count()方法五、删除元素1、del命令2、pop()方法3、remove()方法六、分片赋值七、列表排序1、reverse()方法2、sort()方法. 阅读详情

        在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。

  你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递一个List对象,也可以传递一个List和一个Comparator。如果列表中的元素全都是相同类型的类,并且这个类实现了Comparable接口,你可以简单的调用Collections.sort()。如果这个类没有实现Comparator,你也可以传递一个Comparator到方法sort()中,进行排序。如果你不想使用缺省的分类顺序进行排序,你同样可以传递一个Comparator到方法sort()中来进行排序。如果列表中的元素并不都是相同类型的类,你在进行排序的时候就不是这样幸运了。除非你编写一个专用的跨类的Comparator。

  排序的顺序怎么样呢?如果元素是String对象,却省的排序顺序是按照字符编码进行的,基本上是每个字符的ASCII/Unicode值。如果严格的限制在处理英文,却省的排序顺序通常是足够的,因为它首先排A-Z,然后是小写字母a-z。然而如果你处理非英文字,或者你只是想使用不同的排序顺序,这样Collections.sort()就出现了第二种变化。例如,你想使用字符串的反序进行排序。为了实现这个功能,你可以在Collections类中通过reverseOrder()来获取一个反序Comparator。然后,你将反序Comparator传递给sort()方法。换句话说,你作如下工作:

List list  =  ...;
Comparator comp 
=  Collections.reverseOrder();
Collections.sort(list, comp);

  如果列表包含项目:Man, man, Woman, 和woman,排序好的列表将是Man, Woman, man, woman。这里没有什么复杂的。需要注意的非常重要的一点是Collections.sort()是进行原位排序。如果你需要保留原序,需要先对原集合进行复制,在排序,就像这样:

List list  =  ...;
List copyOfList 
=   new  ArrayList(list);
Collections.sort(copyOfList);

  这里,排好序的列表是:Man, Woman, man, woman,但是原始列表(Man, man, Woman, woman)被保留了。

  到目前为止,排序是区分大小写的。你如何进行不去分大小写的排序呢?一种实现方式是象这样实现Comparator:

public   static   class  CaseInsensitiveComparator
implements  Comparator  {
public int compare(Object element1,
Object element2) 
{
String lower1 
=
element1.toString().toLowerCase();
String lower2 
=
element2.toString().toLowerCase();
return lower1.compareTo(lower2);
}

}

  你确实不需要手工的创建这个类。而是,你可以是用以存在的Comparator,CASE_INSENSIVTIVE_ORDER,它是在String类中定义的。

  这种实现方式有一点小小的问题。Sort()算法提供稳定的排序,并保持与原有序列相同的元素。这意味着一个包含两个元素”woman”和”Woman”的列表将有不同的排序,而这种不同是根据两个元素在列表中出现的先后次序决定的。

  语言的不同又会怎么样呢?java.text包提供了Collector和CollectionKey类来进行区分语言的排序。这里是例子:

  注意,如果你的文本是本地语言,而不是缺省语言,你需要传递一个本地语种给getInstance()方法,就象:

public   static   class  CollatorComparator
implements  Comparator  {
Collator collator 
= Collator.getInstance();
public int compare(Object element1,
Object element2) 
{
CollationKey key1 
= collator.getCollationKey(
element1.toString());
CollationKey key2 
= collator.getCollationKey(
element2.toString());
return key1.compareTo(key2);
}

}

  你是在对集合关键字进行排序,而不是实际的字符串。这不仅提供固定的不区分大小写的排序,而且它是跨语种的排序。换句话说,如果你对西班牙文和非西班牙文的混合词进行排序,词ma?ana (tomorrow)将排在mantra的前面。如果你不使用Collector,ma?ana将排在mantra的后面。

  下面这个程序对一个列表进行不同类型的排序(缺省的、区分大小写的、区分语种的):

import  java.awt.BorderLayout;
import  java.awt.Container;
import  java.io. * ;
import  java.text. * ;
import  java.util. * ;
import  javax.swing. * ;
public   class  SortIt  {
public static class CollatorComparator
implements Comparator {
Collator collator 
= Collator.getInstance();
public int compare(Object element1,
Object element2) 
{
CollationKey key1 
= collator.getCollationKey(
element1.toString());
CollationKey key2 
= collator.getCollationKey(
element2.toString());
return key1.compareTo(key2);
}

}

public static class CaseInsensitiveComparator
implements Comparator {
public int compare(Object element1,
Object element2) 
{
String lower1 
= element1.toString().
toLowerCase();
String lower2 
= element2.toString().
toLowerCase();
return lower1.compareTo(lower2);
}

}

public static void main(String args[]) ...
}

  如果你的主要问题是顺序访问,可能列表不是你的好的数据结构选择。只要你的集合没有重复,你可以在树(TreeSet)中保存你的元素(提供或不提供Comparator)。这样,元素将总是排序形式的。

 摘录来源:http://www.wappan.com/html/10/ca2d05e1c5b3d2b271fb96cf2e7f4cda.html 

Windows下高效部署llama.cpp:从环境配置到模型量化的完整指南 本文提供了一份详尽的Windows系统下部署llama.cpp的完整指南。内容涵盖从Python环境配置、使用CMake与MinGW编译工具链的搭建,到编译llama.cpp项目、获取并转换模型为GGUF格式,以及执行模型量化和基础推理测试的全过程。指南旨在帮助开发者在普通Windows电脑上,无需高端显卡,仅凭CPU即可高效运行大语言模型,并重点解决了部署过程中常见的环境与编译错误。 阅读详情

相关推荐

手把手教你设计T型和Π型衰减器:从分贝计算到电阻选型全攻略

本文提供了一份T型和Π型衰减器的详细设计指南,涵盖从分贝计算到电阻选型的全过程。文章以50欧姆系统为例,通过公式推导和实例演示,手把手教你计算两种经典拓扑的电阻值,并深入探讨了电阻选型、误差控制及高频应用等关键实践技巧,帮助工程师和爱好者精准实现信号衰减与阻抗匹配。

blue42的博客 1334

CSS列表(有序,无序,去掉无序列表的点,列表一行显示)

CSS列表有序列表无序列表无序列表去掉点成行显示 有序列表 有序列表顾名思义就是会对列表排序 例如这样↓ 1.第一句 2.第二句 3.第三句 <ol> <li>第一句</li> <li>第二句</li> <li>第三句</li> </ol> 排序方式可分为五种 1.数字排序 2.字母排序 3.小写字母排序 4.罗马字母排序 5.小写罗马字母排序 样例代码: <!DOCTYPE html&gt

『愚』的博客 3万+

of_graph_get_remote_port

isp { compatible = "isp"; core@0 { id = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ...

wmzjzwlzs的专栏 1165

在Java中如何给List进行排序?这7种方法都可以轻松实现!

以上我介绍了7种列表排序的方法,在 Java 8 之前,我们使用 for-each 循环遍历 List 并打印列表的每个内容,Java 8以后就可以使用forEach() 方法对于lambdas的应用非常实用。从文中介绍的排序方法,可以看出在 Java 8 中使用 lambda 表达式对列表进行排序会使得代码简洁且富有表现力,希望大家在遇到排序场景的时候,多使用lambda 表达式。

网络技术联盟站 7416

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用

本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。

zeta9的博客 264

微信小程序利用Echarts加载中国地图的步骤

微信小程序如何利用Echarts加载地图?可按照如下四个步骤进行。(阅读时间大概3分钟)。

成都都成 5275

38-有序列表

2.2有序列表(理解) 有序列表即为有排列顺序的列表,其各个列表项会按照一定的顺序来排列定义。 在HTML标签中,<ol>标签用于定义有序列表,列表排序以数字来显示,并且使用<li>标签来定义列表项。 有序列表的基本语法格式如下: <ol> <li>列表项1</li> <li>列表项2</li> <li>列表项3</li> ... </ol> 示例: <!DOCTY

weixin_45683698的博客 3137

【腾讯小龙虾WorkBuddy专栏01】初识WorkBuddy!定位、核心优势、功能界面全解析

【腾讯小龙虾WorkBuddy专栏01】初识WorkBuddy!定位、核心优势、功能界面全解析

AI人人懂 3836

Java排序,看这一篇就够了(List、Map、Object复合升序和降序)

Java排序,看这一篇就够了(List、Map、Object复合升序和降序)

西凉的悲伤博客 1万+

Python 爬虫实战:淘宝直播间实时数据抓取(弹幕分析 + 流量监控)

随着电商直播的迅猛发展,淘宝直播已成为品牌推广和商品销售的重要阵地。通过爬取淘宝直播间的实时数据,包括弹幕互动和流量信息,可以帮助商家深入了解用户行为、优化直播策略,同时为市场分析和商业决策提供数据支持。本文将深入探讨如何利用 Python 爬虫技术实现对淘宝直播间实时数据的抓取,并进行弹幕分析和流量监控。

u014481728的博客 730

UG\NX二次开发 判断对象是虚线还是实线

网友提问“怎么区分虚线实线”,这个可以通过函数判断。

王牌飞行员_里海的博客 357

java编程顺序排列_Java编程技巧:列表排序

[摘自:优快云 http://dev.youkuaiyun.com/article/31/31142.shtm]在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持.你能够使用java.util.Collections类中的sort...

weixin_33298963的博客 335

Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码)

摘要 本文介绍了基于Spring Boot 3.2和Spring AI 1.0.0-M4构建智能客服系统的技术方案。系统采用分层架构设计,集成DeepSeek API提供自然语言处理能力,使用MyBatis和H2数据库实现数据持久化,并通过Thymeleaf+Bootstrap构建前端界面。文章详细阐述了项目的技术栈选择、Maven依赖配置、应用架构设计,以及各模块的功能划分,为开发者提供了完整的智能客服系统实现方案,涵盖从后端服务到前端交互的全流程开发指导。

博客 3845

java对列表数据排序_如何在Java中对列表进行排序

java对列表数据排序Sometimes we have to sort a list in Java before processing its elements. In this tutorial, we will learn how to sort a list in the natural order. We will also learn how to use our own Compa...

从零开始的教程世界 5367

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java技巧:列表排序

在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。   你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递一个List对象,也可以传递一个List和一个

键者天行 6547

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java程序对字符串列表进行排序

Here is the Java program to sort list of strings. This program uses compareTo() method to compare the strings and finally uses bubble sort technique to sort them. compareTo() method compares two strin...

culing2941的博客 3716

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java实现列表拖动排序

需求:最近项目需求中产品提到了列表需要支持拖动排序的问题,而当前系统中的列表是支持分页+条件搜索的,也就是说我们列表返回的orderNum肯定不是连续的。 动态效果如图: 20220427_112316 方案一 实现方案一: 不管数据向上还是向下移动,只会改变目标数据当前的位置和目标数据最后存放位置的之前的数据的orderNum值,其他数据的orderNum保持不变 向上移动 向下移动 代码实现 /** * 前端传递的body * @Author xiaosuhe ..

tarcy的博客 8403

Java 排序,Java 聊天对话列表排序等

首先需要如下方法 /** * 根据最后一条消息的时间戳对对话进行排序 * 使用时将T替换成你要排序的Bean对象 * * @param 需要排序的list */ private void sortTime(List<Pair<Long, T>> list) { Collections....

u012814480的博客 776

Java 8 Comparator: 列表排序

在本文中,我们将看到几个关于如何在Java 8中对List进行排序的示例。 1.按字母顺序排序字符串列表 List<String> cities = Arrays.asList( "Milan", "london", "San Francisco", "Tokyo", ...

liululee的博客 411

Java 列表排序:深入理解 Comparator.comparing 和降序排序!!!

本文深入探讨了 Java 8 中列表排序的机制,特别是 Comparator.comparing 和降序排序的使用。通过解析代码 resultList.sort(Comparator.comparing(PaymentRecord::getOrderNo).reversed());,文章详细解释了如何对 List<PaymentRecord> 按 orderNo 字段进行降序排序。文章还通过表格、流程图、时序图和思维导图,全面展示了排序过程及其关键概念。

小丁的博客 1727

Java实现 根据list列表元素的时间字段进行排序

工作中遇到一个问题: 调用别人家的接口查询数据,可是接口中查询的结果并没有对结果进行时间排序。于是就用了一下方法对查询的结果集根据时间排序。我用简单的用户类来演示排序过程,做一下记录。 本次测试使用了nutz框架的Json工具类对list结果进行打印,maven引用如下: &lt;dependency&gt; &lt;groupId&gt;org.n...

萧仁武~~博客~~ 1万+
上一篇: java 集合框架(Collection)和数组的排序
下一篇: Java开发者需坚守的十大基本准则
flyfanc
博客等级 码龄19年 4粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值