java中list的多条件排序(java 多条件排序)

本文目录一览:

集合List根据多个字段进行排序

        最近用java抓取数据的时候,遇到了需要对拿到的List集合按照多个字段进行排序。首先得让排序的实体类实现Comparable类并且重写它的compareTo方法,在compareTo中你可以自定义排序的规则。如果前者大于后者,则返回1,若果相等则返回0,若果前者小于后者,则返回-1;String字符串比较的时候也会经常用到这个compareTo方法,查看String类,可以看到它也实现了Comparable类。

String类

新建一个User类:按照id升序,age降序来排序。

再建一个Junit测试类

排序结果

java 中 List 怎么排序呢

MapString, String map =new HashMapString, String();

java.util.ListString list=new ArrayListString();

map.put(“a”, “a”);

map.put(“c”, “c”);

map.put(“b”, “b”);

list.addAll(map.keySet());

Collections.sort(list);

for (String key : list)

{

System.out.println(map.get(key));

}

直接Copy 到main方法中运行, 是个降序! 升序的话 Collections 这里面也有的。

楼主 太抠门, 5分都不给!

JAVA中list集合的排序

根据字符串的含义,进行对象化,比如,Student,有三个属性,序号,姓名,分数

注意重写Student的Compareable接口

然后,ListString变成ListStudent students=new ArrayListStudent

然后,遍历list,算出平均分,放入新的SortListStudent

打印结果

java中list排序

第一种方法,就是list中对象实现Comparable接口,代码如下:

public class Person implements ComparablePerson {

private String name;

private Integer order;

/**

* @return the name

*/

public String getName() {

return name;

}

/**

* @param name

* the name to set

*/

public void setName(String name) {

this.name = name;

}

/**

* @return the order

*/

public Integer getOrder() {

return order;

}

/**

* @param order

* the order to set

*/

public void setOrder(Integer order) {

this.order = order;

}

@Override

public int compareTo(Person arg0) {

return this.getOrder().compareTo(arg0.getOrder());

}

}

public static void main(String[] args) {

ListPerson listA = new ArrayListPerson();

Person p1 = new Person();

Person p2 = new Person();

Person p3 = new Person();

p1.setName(“name1”);

p1.setOrder(1);

p2.setName(“name2”);

p2.setOrder(2);

p3.setName(“name3”);

p3.setOrder(3);

listA.add(p2);

listA.add(p1);

listA.add(p3);

Collections.sort(listA);

for (Person p : listA) {

System.out.println(p.getName());

}

}

第二种方法,就是在重载Collections.sort方法,代码如下:

public class Person {

private String name;

private Integer order;

/**

* @return the name

*/

public String getName() {

return name;

}

/**

* @param name

* the name to set

*/

public void setName(String name) {

this.name = name;

}

/**

* @return the order

*/

public Integer getOrder() {

return order;

}

/**

* @param order

* the order to set

*/

public void setOrder(Integer order) {

this.order = order;

}

}

public static void main(String[] args) {

ListPerson listA = new ArrayListPerson();

Person p1 = new Person();

Person p2 = new Person();

Person p3 = new Person();

p1.setName(“name1”);

p1.setOrder(1);

p2.setName(“name2”);

p2.setOrder(2);

p3.setName(“name3”);

p3.setOrder(3);

listA.add(p2);

listA.add(p1);

listA.add(p3);

Collections.sort(listA, new ComparatorPerson() {

public int compare(Person arg0, Person arg1) {

return arg0.getOrder().compareTo(arg1.getOrder());

}

});

for (Person p : listA) {

System.out.println(p.getName());

}

}

两次执行的结果都是:

name1

name2

name3

JAVA中list排序问题

compareTo

只是比较2个字符串,不能进行排序

String

s1

=

“abc”;

String

s2

=

“abcd”;

String

s3

=

“abcdfg”;

String

s4

=

“1bcdfg”;

String

s5

=

“cdfg”;

String

s6=”abc”;

System.out.println(

s1.compareTo(s2)

);

//

-1

(前面相等,s1长度小1)

System.out.println(

s1.compareTo(s3)

);

//

-3

(前面相等,s1长度小3)

System.out.println(

s1.compareTo(s4)

);

//

48

(“a”的ASCII码是97,”1″的的ASCII码是49,所以返回48)

System.out.println(

s1.compareTo(s5)

);

//-2

System.out.println(

s1.compareTo(s6)

);

//

比较方法其实就是对字符串中的字符逐个比较ASCII

值相减,如果2个字符串是包含关系返回长度差。Collections.sort方法才是对LIST

进行排序的方法。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/201055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-06 11:30
下一篇 2024-12-06 11:30

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • Tensor to List的使用

    Tensor to List是TensorFlow框架提供的一个非常有用的函数,在很多的深度学习模型中都会用到。它的主要功能是将TensorFlow中的张量(Tensor)转换为P…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29

发表回复

登录后才能评论