java list sort(JAVA中list排序问题)

2025-02-15 00:50:03 0

java list sort(JAVA中list排序问题)

本文目录

JAVA中list排序问题

分不多,不过正好我研究了这里,也算给自己做个总结:我为了方便解释、写了一个测试类/** test for reflex */public class Model { private String name; private String content; public Model(){ this.name = “my name“; this.content = “a long text“; } public void setName(String name) { this.name = name; } public String getName() { return name; } public String getContent() { return content; } //测试 public void test() throws Exception{ Model model = new Model(); Method m1 = model.getClass().getMethod(“getName“, null); System.out.println(m1.invoke(model, null)); } public static void main(String args){ try { new Model().test(“getName“); } catch (Exception e) { e.printStackTrace(); } }}首先调用test,传递一个method过去;通过反射机制(这里用到了getMethod、invoke,我比较喜欢getField)、获取到m1对象的getName方法,getMethod第一个参数为方法名、第二个是给这个method的参数的类型,If parameterTypes is null, it is treated as if it were an empty array,如果为null,表示没有参数;(即 getName()方法);然后在通过 invoke 注入参数;第一个是相应对象的引用、第二个是参数值(刚刚的是类型,现在才是值);If the underlying method is static, then the specified obj argument is ignored. It may be null,也就是说static的方法第一个参数是null;我们要调用的是getName(),那么就是 m1.invoke(model,null)了;执行结果为:my name ;相当于调用了getName()方法.绕了一圈也就是 model.getName() == model.getClass().getMethod(“getName“,null).invoke(model,null);对于有参数的,调整为 public void test(String method) throws Exception{ Model model = new Model(); Method m1 = model.getClass().getMethod(method, String.class); m1.invoke(model, “can you“); System.out.println(model.getName()); } 结果:can you接下来上边的题目就简单了,public void Sort(List《E》 list, final String method, final String sort){这里给出了method,接下来是一个内部类的处理;自定义一个comparator,Method m1 = ((E) a).getClass().getMethod(method, null);这里就是获取method方法,他没有参数。m1.invoke(((E)a), null).toString()这里是得到对象a调用方法method之后的返回值。ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());而这里就是比较两个对象method方法的返回值将ret交给sort进行排序;就像3楼说的、真正排序的是sort方法,下面的只是对一个类中某个方法的返回值进行比较

Java里面List排序

摘自:http://www.blogjava.net/zygcs/archive/2008/01/17/176032.html//一个POJO例子class User { String name; String age; public User(String name,String age){ this.name=name; this.age=age; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }//具体的比较类,实现Comparator接口import java.util.Comparator;import java.util.List;import java.util.ArrayList;import java.util.Collections;public class ComparatorUser implements Comparator{ public int compare(Object arg0, Object arg1) { User user0=(User)arg0; User user1=(User)arg1; //首先比较年龄,如果年龄相同,则比较名字 int flag=user0.getAge().compareTo(user1.getAge()); if(flag==0){ return user0.getName().compareTo(user1.getName()); }else{ return flag; } } }//测试类public class SortTest { public static void main(String args){ List userlist=new ArrayList(); userlist.add(new User(“dd“,“4“)); userlist.add(new User(“aa“,“1“)); userlist.add(new User(“ee“,“5“)); userlist.add(new User(“bb“,“2“)); userlist.add(new User(“ff“,“5“)); userlist.add(new User(“cc“,“3“)); userlist.add(new User(“gg“,“6“)); ComparatorUser comparator=new ComparatorUser(); Collections.sort(userlist, comparator); for (int i=0;i《userlist.size();i++){ User user_temp=(User)userlist.get(i); System.out.println(user_temp.getAge()+“,“+user_temp.getName()); } }} //首先年龄排序,如果年龄相同,则按名字排序结果: 1, aa 2, bb 3, cc 4, dd 5, ee //注意:同样是5岁的人,则比较名字(ee,ff),然后排序 5, ff 6, gg

java arraylist 的sort怎么用

在排序中,最重要的是自己实现自己的比较的行数,即是implements Comparator实现方法 public int compare(Object o1, Object o2) 最为重要..举个例子:package book.arrayset;import java.util.Comparator;/*** 整数比较器,将整数按降序排列*/class MyIntComparator implements Comparator{/*** o1比o2大,返回-1;o1比o2小,返回1。*/public int compare(Object o1, Object o2) {int i1 = ((Integer)o1).intValue();int i2 = ((Integer)o2).intValue();if (i1 《 i2){return 1;}if (i1 》 i2){return -1;}return 0;}}//上面的为比较的函数实现,下面真正的添加数据,//通过调用上面的比较函数实现自定义排序的功能package book.arrayset;import java.util.ArrayList;import java.util.Collections;import java.util.List;/*** 对List中的元素排序*/public class SortList {public static void output(List list){if (list == null){return;}for (int i=0; i《list.size(); i++){System.out.print(list.get(i).toString() + “ “);}System.out.println();}public static void main(String args) {List list = new ArrayList();list.add(new Integer(5));list.add(new Integer(8));list.add(new Integer(1));list.add(new Integer(3));list.add(new Integer(2));list.add(new Double(3.1));System.out.println(“list开始状态“);SortList.output(list);//Collections.sort方法将用默认比较器排列list的元素Collections.sort(list);System.out.println(“list被默认比较器排序后的状态“);SortList.output(list);//下面将list的元素按降序排列Collections.sort(list, new MyIntComparator());System.out.println(“list被自定义比较器排序后的状态“);SortList.output(list);//因此,对于任意自定义类的对象,当保存在集合类容器中后,如果需要对它们进行排序,//需要自己提供适应于自定义类的比较器,自定义比较器必须实现Comparator接口。//然后采用Collections.sort(list, comparator);方法对容器进行排序。}}

java list 排序

import java.util.ArrayList;import java.util.List;public class App { public static void main(String args) { List《Integer》 list = new ArrayList《》(); list.add(85); list.add(35); list.add(20); list.add(60); list.add(54); list.sort((x, y) -》 Integer.compare(x, y)); list.forEach(System.out::println); }}

java 怎么将List里面数据排序

学生实体类,包含姓名和年龄属性,

比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。

第一种:实体类自己实现比较

(实现comparable接口:public interface Comparable《T》 ,里面就一个方法声明:public int compareTo(T o); )

然后利用List类的sort(Comparator《? super E》 c)方法或java.util.Collections工具类的sort(List《T》 list) (其实里面就一句:list.sort(null); )进行排序:

结果:

第二种:借助比较器进行排序。

示例代码:

比较器java.util.Comparator类是一个接口(public interface Comparator《T》 ),包含int compare(T o1, T o2);等方法:

我们的比较器要实现该接口并实现compare方法:

比较的时候可以利用List的sort(Comparator《? super E》 c)方法(或者java.util.Collections工具类的sort(List《T》 list, Comparator《? super T》 c)方法)进行排序。

结果跟第一种方法一样:

Java List提供的默认排序方法sort()用的是什么排序策略

你好,很高兴回答你的问题。List只是个接口,sort方法具体是怎么排序的是在具体的实现类中的。不同的实现类排序实现是不一样的。有的同一个实现类在java的不同版本中排序的实现也可能是有差别的。如果有帮助到你,请点击采纳。

java怎么对list进行排序

1,使用Comparator 接口Student类 结构如下:(省略getter,setter方法)public class Student {/**** 姓名*/private String name;private int age;private String address;/**** 考试得分*/private int score;//省略getter,setter方法@Overridepublic String toString() {return “Student 核心类:public static class ListComparator implements Comparator{/**** 是否转化为Int之后再比较*/private boolean isConvertInteger;/**** 对哪个列进行排序*/private String comparedProperty;public ListComparator(boolean isConvertInteger,String comparedProperty) {super();this.isConvertInteger = isConvertInteger;this.comparedProperty=comparedProperty;}public int compare(Object o1, Object o2) {if(null!=o1&&null!=o2){try {Object obj1=ReflectHWUtils.getObjectValue(o1, comparedProperty);Object obj2=ReflectHWUtils.getObjectValue(o2, comparedProperty);if(isConvertInteger){int num1;int num2;if(obj1 instanceof Integer){num1=(Integer)obj1;num2=(Integer)obj2;}else{num1=Integer.parseInt(obj1.toString());num2=Integer.parseInt(obj2.toString());}if(num1》num2){return 1;}else if(num1《num2){return -1;}else{return 0;}}else{return obj1.toString().compareTo(obj2.toString());}} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}return 0/*等于*/;}}2,可以指定是升序还是降序实例:@Testpublic void test_ListComparator(){List《Student》students=new ArrayList《Student》();Student stu=null;stu=new Student();stu.setName(“whuang“);stu.setAge(12);stu.setScore(80);students.add(stu);stu=new Student();stu.setName(“rong“);stu.setAge(11);stu.setScore(90);students.add(stu);stu=new Student();stu.setName(“zhu“);stu.setAge(15);stu.setScore(100);students.add(stu);SortList《Student》 sortList = new SortList《Student》();sortList.Sort(students, “getAge“, “asc“);System.out.println(students);}注意:sortList.Sort 的第二个参数是方法名,不是成员变量名.核心代码package com.common.util;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Collections;import java.util.Comparator;import java.util.List;public class SortList《E》 {public void Sort(List《E》 list, final String method, final String sort) {Collections.sort(list, new Comparator() {public int compare(Object a, Object b) {int ret = 0;try {Method m1 = ((E) a).getClass().getMethod(method, null);Method m2 = ((E) b).getClass().getMethod(method, null);if (sort != null && “desc“.equals(sort))// 倒序ret = m2.invoke(((E) b), null).toString().compareTo(m1.invoke(((E) a), null).toString());else// 正序ret = m1.invoke(((E) a), null).toString().compareTo(m2.invoke(((E) b), null).toString());} catch (NoSuchMethodException ne) {System.out.println(ne);} catch (IllegalAccessException ie) {System.out.println(ie);} catch (InvocationTargetException it) {System.out.println(it);}return ret;}});}}

Java的List怎么排序啊

用Collections.sort就可以排序,里面的排序是默认的按自然顺序排列也就是1,2,3,4这种参数要求实现了Comparable的数据才能排序,如果你自己写的类,你就要实现Comparable接口,然后在接口里面自动生成的方法里面指定排序方法,一般的String Inteneger类都是实现了这个接口的 不用自己操作的。你可以取看源代码

java list sort(JAVA中list排序问题)

本文编辑:admin

更多文章:


idea官网网址(Linux平台上,2018年度Snap格式应用都有哪些)

idea官网网址(Linux平台上,2018年度Snap格式应用都有哪些)

本文目录Linux平台上,2018年度Snap格式应用都有哪些和众筹有关的网站都有哪些在你的程序员修炼之路上,哪些网站、软件、书或者其他帮助到你Linux平台上,2018年度Snap格式应用都有哪些Snap 是 Canoncial 公司提出

2025年2月9日 12:20

国内国外精品影视网站(有哪些欧美电影网站)

国内国外精品影视网站(有哪些欧美电影网站)

本文目录有哪些欧美电影网站全球范围内,有哪些国家的电影评分网站可以达到豆瓣的级别最喜欢哪个电影网站哪些视频软件有大量其他国家的电影资源国外哪些网站可以看国内的电视剧有哪些欧美电影网站暖乐影视: 你也可以关注公众号:暖乐窝,输入你想看的片名,

2025年3月4日 03:30

关于randy这个名字?Max认识randy是哪一集

关于randy这个名字?Max认识randy是哪一集

本文目录关于randy这个名字Max认识randy是哪一集randy英文名什么意思思如何评价老鹰乐队贝斯手Randy meisner关于randy这个名字randy . . a. 喧闹的,有劲的大声的,乱闹的 n. 挑剔的女人 这

2025年3月11日 02:20

map遍历删除(c++ 遍历map时删除当前元素正确方法)

map遍历删除(c++ 遍历map时删除当前元素正确方法)

本文目录c++ 遍历map时删除当前元素正确方法C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效map遍历时怎么删除元素JAVA中HashMap如何删除元素c++ 遍历map时删除当前元素正确方法如果是清空map的话建议

2025年3月21日 21:20

scalemode(scalewidth是什么)

scalemode(scalewidth是什么)

本文目录scalewidth是什么vb picture.scalemode的各个取值各代表什么意思scalewidth是什么ScaleHeight、ScaleWidth 属性当使用图形方法或调整控件位置时,返回或设置对象内部的水平 (Sca

2025年3月10日 05:00

narrative essay(Narrative Essay(个人叙事性论文)怎么写 有人能帮忙下吗)

narrative essay(Narrative Essay(个人叙事性论文)怎么写 有人能帮忙下吗)

本文目录Narrative Essay(个人叙事性论文)怎么写 有人能帮忙下吗Narrative Essay就是记叙文吗该怎么写叙事文 NARRATIVE ESSAY 怎么写高分Narrative Essay怎么写Narrative Ess

2025年2月15日 08:10

宋思明海藻什么电视剧(《蜗居》海藻下场凄惨,哪些细节表明宋思明是真的爱上她了)

宋思明海藻什么电视剧(《蜗居》海藻下场凄惨,哪些细节表明宋思明是真的爱上她了)

本文目录《蜗居》海藻下场凄惨,哪些细节表明宋思明是真的爱上她了《蜗居》中,宋思明知道海藻已经摘除子宫,为什么还要松开方向盘电视剧《蜗居》里宋思明说自己拿了海藻第一次,海藻明知真相,为何不解释电视剧《蜗居》中,海藻和宋思明之间有真正的爱情吗《

2025年2月23日 10:10

ifeng凤凰网(请问凤凰网的网址是什么)

ifeng凤凰网(请问凤凰网的网址是什么)

本文目录请问凤凰网的网址是什么凤凰网 为什么叫ifeng呢请问凤凰网的网址是什么凤凰网的网址:凤凰网网址。凤凰网是一个网站。凤凰网整合了媒体机构生产的内容、用户生成的内容、以及自身生产的内容,提供含文图音视频的全方位综合新闻资讯、深度报道、

2025年3月25日 06:10

iframe跨域自动登录(如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器)

iframe跨域自动登录(如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器)

本文目录如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器Excel 求助,请教IFRAME框架网页的自动登录跨域访问iframe问题如何单点登录或如何跨域访问iframe内DOM元素iframe怎样解决跨域问题JS跨域访问

2025年2月11日 11:50

php论坛源码织梦(腾讯云(还有谁)个人博客织梦系统源码 php版)

php论坛源码织梦(腾讯云(还有谁)个人博客织梦系统源码 php版)

本文目录腾讯云(还有谁)个人博客织梦系统源码 php版我用phpstudy本地建站操作,现在做的是织梦dedecms网站,dedecms源码已经放到WWW根目录下,php源码开发腾讯云(还有谁)个人博客织梦系统源码 php版下面直接上代码

2025年2月22日 22:00

wiggle表达式(ae里动画选项里的摇摆器命令和wiggle有什么区别)

wiggle表达式(ae里动画选项里的摇摆器命令和wiggle有什么区别)

本文目录ae里动画选项里的摇摆器命令和wiggle有什么区别wiggle表达式问题 wiggle(2,50) 这里的2和50具体什么意思 是第秒2次还是第二秒2次 还是每5秒二次如何使用wiggle表达式实现单轴抖动AE wiggle表达式

2025年2月18日 01:00

定时任务app(JAVA如何中断定时任务)

定时任务app(JAVA如何中断定时任务)

本文目录JAVA如何中断定时任务app定时软件是怎么运行的哪款软件有定时发微信朋友圈的功能JAVA如何中断定时任务中断?可能是想说暂停吧。简单写了个栗子,定时任务是每一分钟运行一次,需要暂停时就调用pauseTask,需要继续就调用cont

2025年3月31日 20:30

java小项目(有没有适合java初学者的小项目,综合性比较强的,web后端,推荐几个,面试用)

java小项目(有没有适合java初学者的小项目,综合性比较强的,web后端,推荐几个,面试用)

本文目录有没有适合java初学者的小项目,综合性比较强的,web后端,推荐几个,面试用做一个java小项目JAVA小型项目开发求JAVA小项目的完整代码用JAVA编一个小游戏或者其他程序有没有适合java初学者的小项目,综合性比较强的,we

2025年2月19日 22:00

infatuation(infatuation什么意思)

infatuation(infatuation什么意思)

本文目录infatuation什么意思christina的infatuation的中文歌词infatuation什么意思infatuation英 n.热恋,迷恋迷恋;醉心;痴心;痴情复数: infatuations 双语例句1. It is

2025年4月6日 09:50

distribute什么意思(distributed是什么意思)

distribute什么意思(distributed是什么意思)

本文目录distributed是什么意思attribute, contribute, distribute区别distribute在句中是什么意思distribute是什么意思distributed是什么意思distributed将…分类(

2025年3月29日 03:00

在线测试仪的原理:?离线测试与在线测试 定义的区别

在线测试仪的原理:?离线测试与在线测试 定义的区别

本文目录在线测试仪的原理:离线测试与在线测试 定义的区别在线统一测试有什么好处如何使用ab对WebSocket服务器做并发性能测试w3cschool 在线测试工具如何实现的在线测试仪的原理:1 慨述 1.1 定义 ICT在线测试仪,ICT,

2025年2月14日 06:10

strcat函数的作用是matlab(C语言strcat)

strcat函数的作用是matlab(C语言strcat)

本文目录C语言strcatmatlab中strcat用法,速求strcat的作用在Matlab里面如何实现字符串的拼接matlab 中有哪些对字符串作用的函数matlab中pdf这个函数是干嘛的matlab中语句strcat(pwd)是什么

2025年3月13日 12:00

ppt触发器设置步骤(ppt里的触发器怎么用)

ppt触发器设置步骤(ppt里的触发器怎么用)

本文目录ppt里的触发器怎么用ppt触发器怎么设置ppt里的触发器怎么用1、首先在PPT页面中插入几个图形或者其他图片,需要在图形上设置触发效果。2、然后点击其中一张图片,并选择工具栏中的“动画”选项,点击其中一种动画效果。3、然后点击动画

2025年2月19日 16:40

index函数的使用方法及实例视频(index函数怎么用)

index函数的使用方法及实例视频(index函数怎么用)

本文目录index函数怎么用js中index函数的使用方法excel INDEX函数的用法index函数公式怎么用excel中,index函数的使用方法关于excel函数中index的用法index函数怎么用1、INDEX函数可以灵活的引用

2025年2月22日 20:50

rules of survival(野性的呼唤 文学评论/读后感如题 谢谢了)

rules of survival(野性的呼唤 文学评论/读后感如题 谢谢了)

本文目录野性的呼唤 文学评论/读后感如题 谢谢了弱肉强食的英文意思野性的呼唤 文学评论/读后感如题 谢谢了在杰克·伦敦写的这本书——《野性的呼唤》中,我走进一只狗的世界。这只狗叫巴克,是一只圣伯纳犬和苏格兰牧羊犬的混血儿。不同的是,巴克并非

2025年4月2日 22:30

近期文章

本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索