Java Collections.sort()实现List排序的默认方法和自定义方法

发布时间 - 2026-01-11 01:54:17    点击率:

1.java提供的默认list排序方法

主要代码:

List<String> list = new ArrayList();list.add("刘媛媛");
list.add("王硕");
list.add("李明");
list.add("刘迪");
list.add("刘布");
//升序
Collections.sort(list,Collator.getInstance(java.util.Locale.CHINA));//注意:是根据的汉字的拼音的字母排序的,而不是根据汉字一般的排序方法
for(int i=0;i<list.size();i++)
{
 System.out.print(list.get(i));
}
System.out.println("");
//降序
Collections.reverse(list);//不指定排序规则时,也是按照字母的来排序的
for(int i=0;i<list.size();i++)
{
  System.out.print(list.get(i));
}

输出结果:

李明刘布刘迪刘媛媛王硕

王硕刘媛媛刘迪刘布李明

2.自定义的排序规则:

第一种是model类实现Comparable接口,重写重写int compareTo(Object o)方法

            model类:

public class StudentDTO implements Comparable
{
 private String name;
 private int age;
public String getName()
{
 return name;
}
public void setName(String name)
{
  this.name = name;
}
public ObjType getType()
{
 return type;
}
public void setAge(int age)
{
  this.age= age;
}
@Override
public int compareTo(Object o)
{
  StudentDTO sdto = (StudentDTO)o;
  int otherAge = sdto.getAge();
  // note: enum-type's comparation depend on types' list order of enum method
  // so, if compared property is enum-type ,then its comparationfollow ObjEnum.objType order
  return this.age.compareTo(otherAge);
}
}
   主方法:   
public static void main(String[] args)
{
  List<StudentDTO> studentList = new ArrayList();
  StudentDTO s1 = new StudentDTO ();
  s.setName("yuanyuan");
  s.setAge(22);
  studentList.add(s1);
     StudentDTO s1 = new StudentDTO ();
     s.setName("lily");
     s.setAge(23);
     studentList.add(s2);
     Collections.sort(studentList); //按照age升序 22,23,
     Collections.reverse(studentList); //按照age降序 23,22 
}

第二种是比较器类实现Comparator接口,重写int compare(Object o1, Object o2)方法;

           model类:          

public class StudentDTO implements Comparable
{
  private String name;
  private int age;
  public String getName()
  {
   return name;
  }
  public void setName(String name)
 {
   this.name = name;
  }
  public ObjType getType()
  {
   return type;
  }
  public void setAge(int age)
  {
   this.age= age;
  }
} 
   比较器类:
class MyCompartor implements Comparator
{
  @Override
  public int compare(Object o1, Object o2)
 {
   StudentDTO sdto1= (StudentDTO )o1;
   StudentDTO sdto2= (StudentDTO )o2;
   return sdto1.getAge.compareTo(stdo2.getAge())
 }
}
   主方法:
public static void main(String[] args)
{
  List<StudentDTO> studentList = new ArrayList();
  StudentDTO s1 = new StudentDTO ();
  s.setName("yuanyuan");
  s.setAge(22);
  studentList.add(s1);
  StudentDTO s1 = new StudentDTO ();
  s.setName("lily");
  s.setAge(23);
  studentList.add(s2);
  MyComparetor mc = new MyComparetor();
  Collections.sort(studentList,mc);  //按照age升序 22,23,
  Collections.reverse(studentList,mc); //按照age降序 23,22 
}

附注:

1.对于数组的排序方法如下:

String[] names = {"王林", "杨宝", "李镇", "刘迪", "刘波"}; 
Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE));//升序; 
System.out.println(Arrays.toString(names));  

2.对于汉字的排序:可以尝试使用ICU4J会得到更好的结果,特别是姓为某些生僻字的时候,

用com.ibm.icu.text.Collator替换java.text.Collator,用com.ibm.icu.util.ULocale替换java.util.Locale

3.对于枚举类型的enum1.compareTo(enum2)是按照枚举类型值在定义时的先后顺序比较的,越后面的越大,

而不是按照值的字母先后顺序比较的。

 以上所述是小编给大家介绍的Java Collections.sort()实现List排序的默认方法和自定义方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# java cllections.sort  # java list sort 排序  # java中Collections.sort排序函数用法详解  # JAVA对list集合进行排序Collections.sort()  # java中Collections.sort排序详解  # Java Collections.sort()排序代码案例  # 详解java Collections.sort的两种用法  # Java使用Collections.sort()排序的示例详解  # Java使用Collections.sort()排序的方法  # Java中Collections.sort的使用  # JAVA中Collections.sort()方法使用详解  # 升序  # 重写  # 自定义  # 降序  # 小编  # 而不是  # 生僻字  # 在此  # 给大家  # 越大  # 所述  # 第二种  # 第一种  # 给我留言  # 感谢大家  # 方法如下  # 疑问请  # 有任何  # println  # Comparable 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  Windows Hello人脸识别突然无法使用  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何安全更换建站之星模板并保留数据?  JavaScript如何实现路由_前端路由原理是什么  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何获取PHP WAP自助建站系统源码?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  浅谈redis在项目中的应用  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  打造顶配客厅影院,这份100寸电视推荐名单请查收  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何用VPS主机快速搭建个人网站?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何在万网开始建站?分步指南解析  Laravel如何创建自定义Facades?(详细步骤)  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  如何获取上海专业网站定制建站电话?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  北京网站制作的公司有哪些,北京白云观官方网站?  linux top下的 minerd 木马清除方法  智能起名网站制作软件有哪些,制作logo的软件?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  如何在 React 中条件性地遍历数组并渲染元素  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  如何续费美橙建站之星域名及服务?  音乐网站服务器如何优化API响应速度?  如何在万网主机上快速搭建网站?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Android GridView 滑动条设置一直显示状态(推荐)  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  怎么用AI帮你设计一套个性化的手机App图标?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法