java对象排序,java对对象排序

本文目录一览:

java 如何对自定义的对象进行排序

//把排序规则交给sort方法。该方法就回按照你自定义的规则进行排序java.util.Arrays.sort(users,new MyComparator());for (int i = 0; iusers.length; i++){System.out.println (users[i]);}}}class User{String name;int age ;public User(String name,int age){this.name = name;this.age = age;}public String toString(){return name+”:::”+age;}}class MyComparator implements Comparator{public int compare(Object obj1, Object obj2 ){User u1 = (User)obj1;User u2 = (User)obj2;if(u1.ageu2.age){return 1;}else if(u1.ageu2.age){return -1;}else{//利用String自身的排序方法。//如果年龄相同就按名字进行排序

Java中对象按照属性排序

项目中经常需要用到比如地区列表按照中文的拼音首字母排序 但是有时候获取到的地区列表是对象的形式 有地区id 地区名称两个属性 这里主要涉及到两个技术点

对象按属性排序 中文按拼音首字母排序 下面给出自己整理好的demo:

import java text Collator;

import java util ArrayList;

import java util Collections;

import java util Comparator;

import mons beanutils BeanComparator;

import llections ComparatorUtils;

import parators ComparableComparator;

import parators ComparatorChain;

public class CompareTipA  {

private int  id;

private String  name;

private String age;

@SuppressWarnings( unchecked )

public static void main(String []args) {

ArrayListObject list = new ArrayListObject()

list add(new CompareTipA( 五 ))

list add(new CompareTipA( 六 ))

list add(new CompareTipA( 二 ))

list add(new CompareTipA( 四 ))

list add(new CompareTipA( 四 ))

list add(new CompareTipA( 一 ))

Comparator mycmp = ComparableComparator getInstance()

mycmp = ComparatorUtils nullLowComparator(mycmp)

//允许null

mycmp = ComparatorUtils reversedComparator(mycmp) //逆序

ArrayListObject sortFields = new ArrayListObject()

ComparatorObject parator=Collator getInstance(java util Locale CHINA)

sortFields add(new BeanComparator( name parator))   //name正序 (主)

sortFields add(new BeanComparator( id mycmp))

//id逆序  (副)

ComparatorChain multiSort = new ComparatorChain(sortFields)

Collections sort(list multiSort)

for (int i = ;ilist size() i++) {

System out println(list get(i))

//输出   /*

[id= name=二 age= ]

[id= name=六 age= ]

[id= name=四 age= ]

[id= name=四 age= ]

[id= name=五 age= ]

[id= name=一 age= ]*/

}

}

public CompareTipA(int id String age String name) {

this id = id;

this name = name;

this age = age;

}

public int getId() {

return this id;

}

public void setId(int id) {

this id = id;

}

public String getName() {

return this name;

}

public void setName(String name) {

this name = name;

}

//

public int pareTo(Object o) {   //

return pare(this o)    //    }

public String toString() {

return [id= + this id + name= + this name + age= + this age + ] ;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this age = age;

}   }

注意 需要导入的三个包 mons beanutils jar

mons collections jar

mons logging jar

lishixinzhi/Article/program/Java/hx/201311/25790

Java中怎么给一个对象排序

Comparable 是一个自身以前支持自比拟的(如String ,Integer) 的接口 Comparator 可以说是一个 自用的比拟器 当对象自身 不支持自排序和自比拟函数的时辰 咱们可以议决完成Compartor 来比拟两对象的大小 Comparable 是一个比拟通用的接口 用户可以议决他完成 排序功用 而Comparator 可以看作一种算法 一种设计方式 (可以看作是一个战略方式 就是不改动对象自身,而用一个战略对象改动对象行为) Comparable 相比拟较固定 与详细类绑定 , Comparator 比拟灵敏 可以与任何须要完成功用的类 绑定 Comparable 可以说是 静态绑定 Comparator 可以说是静态绑定 Comparable 此接口强行对完成它的每个类的对象执行全体排序。此排序被称为该类的自然排序,类的 compareTo 方法被称为它的自然比拟方法。 完成此接口的对象列表(和数组)可以议决 Collections.sort(和 Arrays.sort)执行自动排序。完成此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比拟器。 关于类 C 的每一个 e1 和 e2 来说,当且仅当 (e1.compareTo((Object)e2) == 0) 与 e1.equals((Object)e2) 具有类似的布尔值时,类 C 的自然排序才叫做与 equals 一致。留意,null 不是任何类的实例,即便 e.equals(null) 前往 false,e.compareTo(null) 也会抛出 NullPointerException。 剧烈推荐(虽然不是必需的)使自然排序与 equals 一致。这是由于在运用其自然排序与 equals 不一致的元素(或键)时,没有显式比拟器的有序集合(和有序映射表)行为表现“怪异”。尤其是,这样的有序集合(或有序映射表)违犯了依据 equals 方法定义的集合(或映射表)的惯例协议。 而Comparator 比拟函数强行对某些对象 collection 执行全体排序。可以将 Comparator 传递给 sort 方法(如 Collections.sort),从而准许在排序顺序上完成精确控制。还可以运用 Comparator 来控制某些数据结构(如 TreeSet 或 TreeMap)的顺序。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-02 18:16
下一篇 2025-01-02 18:16

相关推荐

  • Java JsonPath 效率优化指南

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

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

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

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

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

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

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

    编程 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
  • VSCode为什么无法运行Java

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

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

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

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论