`
m635674608
  • 浏览: 5061838 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java 指定排序

    博客分类:
  • java
 
阅读更多
package com.cyyun.test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SortTest {

	static Map<String, Integer> sortNameMap = new HashMap<String, Integer>();
	static {
		sortNameMap.put("张三", 1);
		sortNameMap.put("王五", 2);
		sortNameMap.put("赵六", 3);
		sortNameMap.put("李四", 4);
	}

	public static Integer getSortNameMapByKey(String key) {
		for (String s : sortNameMap.keySet()) {
			if (key.contains(s)) {
				return sortNameMap.get(s);
			}
		}
		return sortNameMap.size()+1;
	}

	public static <T> void sort(List<T> list,
			final List<Comparator<T>> comparatorList) {
		if (comparatorList.isEmpty()) {// Always equals, if no Comparator.
			throw new IllegalArgumentException("comparatorList is empty.");
		}
		Comparator<T> comparator = new Comparator<T>() {
			public int compare(T o1, T o2) {
				for (Comparator<T> c : comparatorList) {
					if (c.compare(o1, o2) > 0) {
						return 1;
					} else if (c.compare(o1, o2) < 0) {
						return -1;
					}
				}
				return 0;
			}
		};
		Collections.sort(list, comparator);
	}

	public static <E> void sortByMethod(List<E> list, final String method,
			final boolean reverseFlag) {
		Collections.sort(list, new Comparator<Object>() {
			@SuppressWarnings("unchecked")
			public int compare(Object arg1, Object arg2) {
				int result = 0;
				try {
					Method m1 = ((E) arg1).getClass().getMethod(method, null);
					Method m2 = ((E) arg2).getClass().getMethod(method, null);
					Object obj1 = m1.invoke(((E) arg1), null);
					Object obj2 = m2.invoke(((E) arg2), null);
					if (obj1 instanceof String) {
						if (method.toLowerCase().contains("name")) {
							Integer sort1 = getSortNameMapByKey((String) (obj1));
							Integer sort2 = getSortNameMapByKey((String) (obj2));
							result = sort1.compareTo(sort2);
						} else {
							// 字符串
							result = obj1.toString().compareTo(obj2.toString());
						}
					} else if (obj1 instanceof Date) {
						// 日期
						long l = ((Date) obj1).getTime()
								- ((Date) obj2).getTime();
						if (l > 0) {
							result = 1;
						} else if (l < 0) {
							result = -1;
						} else {
							result = 0;
						}
					} else if (obj1 instanceof Integer) {
						// 整型(Method的返回参数可以是int的,因为JDK1.5之后,Integer与int可以自动转换了)
						result = (Integer) obj1 - (Integer) obj2;
					} else {
						// 目前尚不支持的对象,直接转换为String,然后比较,后果未知
						result = obj1.toString().compareTo(obj2.toString());

						System.err
								.println("MySortList.sortByMethod方法接受到不可识别的对象类型,转换为字符串后比较返回...");
					}

					if (reverseFlag) {
						// 倒序
						result = -result;
					}
				} catch (NoSuchMethodException nsme) {
					nsme.printStackTrace();
				} catch (IllegalAccessException iae) {
					iae.printStackTrace();
				} catch (InvocationTargetException ite) {
					ite.printStackTrace();
				}

				return result;
			}
		});
	}

	public static void main(String[] args) {
		System.out.println("2".compareTo("1"));
		List<Person> list = new ArrayList<Person>();
		Person p = new Person();
		p.setId(1);
		p.setName("张三111");
		list.add(p);
		p = new Person();
		p.setId(2);
		p.setName("李四111");
		list.add(p);
		p = new Person();
		p.setId(3);
		p.setName("王五111");
		list.add(p);
		p = new Person();
		p.setId(4);
		p.setName("赵六1111");
		list.add(p);
		p = new Person();
		p.setId(5);
		p.setName("小王1111");
		list.add(p);
		p = new Person();
		p.setId(6);
		p.setName("老王1111");
		list.add(p);

		sortByMethod(list, "getName", true);
		System.out.println("中文名称正序排列:");
		for (Person pp : list) {
			System.out.println(pp.getId() + "," + pp.getName());
		}
	}

}

class Person {
	private int id;
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

}

 

分享到:
评论

相关推荐

    逻辑编程与自动化推理:缩短证明

    本文介绍了一种扩展解析演算,基于引入新的存在量词。通过应用Q-扩展规则,可以获得多项式反驳,相较于传统的指数级解析反驳,极大地缩短了证明过程。文章详细描述了Q扩展的概念,并通过实例展示了其在简化证明中的有效性。此外,还比较了Q扩展与FR-推导和广义分解的概念,并讨论了新方法在保持可满足性等价性方面的优势。

    福昕软件阅读器的安装包

    福昕软件阅读器的安装包。

    7下-Unit1-8 单词(外研版).mp3

    7下-Unit1-8 单词(外研版).mp3

    深入浅出:PCA与KPCA数据降维技术详解,代码注释版,助力新手轻松掌握,自动导出融合特征至Excel,PCA与KPCA的深入理解与实践:详细代码注释及数据降维新手教程,实现特征融合自动导出至Exce

    深入浅出:PCA与KPCA数据降维技术详解,代码注释版,助力新手轻松掌握,自动导出融合特征至Excel,PCA与KPCA的深入理解与实践:详细代码注释及数据降维新手教程,实现特征融合自动导出至Excel文件。,主成分分析PCA、核主成分分析KPCA用于数据降维,代码注释详细,适合新手学习,可自动导出融合后的特征到excle文件 ,主成分分析PCA; 核主成分分析KPCA; 数据降维; 代码注释详细; 新手学习; 自动导出特征到excel文件,PCA与KPCA数据降维教程:代码注释详尽,适合新手,自动导出至Excel

    LC VCO电感电容压控振荡器:详细设计文档、电路文件与特性介绍,基于工艺文件介绍的高级LCVCO设计解析及其技术参数指南,LC VCO电感电容压控振荡器 LC振荡器 1.有电路文件,带工艺库PDK

    LC VCO电感电容压控振荡器:详细设计文档、电路文件与特性介绍,基于工艺文件介绍的高级LCVCO设计解析及其技术参数指南,LC VCO电感电容压控振荡器 LC振荡器 1.有电路文件,带工艺库PDK 2.有设计文档,PDF,原理和仿真介绍都有,参数设置教程,仿真状态设置 工艺:tsmc18rf 供电电压: 1.8V 中心频率: 2.4GHz 相位噪声: <-110dBc Hz 功耗: <10mW 锁相环 pll cppll ,核心关键词: 1. LC VCO电感电容压控振荡器; 2. LC振荡器; 3. 电路文件; 4. 工艺库PDK; 5. tsmc18rf; 6. 供电电压1.8V; 7. 中心频率2.4GHz; 8. 相位噪声-110dBc Hz; 9. 功耗<10mW; 10. 锁相环(PLL); 11. PLL CPPLL。,基于LC VCO电感电容压控振荡器:TSMC18RF工艺下的低功耗高稳定振荡器设计

    Comsol金属结构增强二硫化钼吸收性能的偏振依赖性研究,Comsol模拟金属结构偏振效应对二硫化钼吸收性能的增强研究,Comsol金属结构偏振依赖性增强二硫化钼吸收 ,Comsol; 金属结构;

    Comsol金属结构增强二硫化钼吸收性能的偏振依赖性研究,Comsol模拟金属结构偏振效应对二硫化钼吸收性能的增强研究,Comsol金属结构偏振依赖性增强二硫化钼吸收。 ,Comsol; 金属结构; 偏振依赖性; 二硫化钼; 吸收。,Comsol金属结构增强二硫化钼偏振依赖性吸收

    Java学生管理系统的毕业设计模板:涵盖系统设计、技术实现和测试流程

    内容概要:本文提供了Java毕业设计报告的一个模板,主要涉及一个名为“学生管理系统”的开发项目。文中详细介绍了整个项目的各个阶段及要点,包括但不限于需求分析(明确项目要解决的问题以及具体的系统功能)、系统设计方案(MVC架构的具体应用)、选用的技术及工具列表、核心功能点的技术实现方法(例如,使用Swing和JDBC完成学生的增查操作),还包括系统的初步评估,确保系统按预期工作的测试步骤及其结论,并简述了一些改进的思路以及对未来版本功能和性能的期望。

    STM32储能逆变器技术资料:原理图、PCB设计、源代码集成并网充电放电与全方位保护功能,功率达5kw,智能控制与在线升级,STM32储能逆变器技术资料:原理图、PCB与源代码集成,智能并网充电放电及

    STM32储能逆变器技术资料:原理图、PCB设计、源代码集成并网充电放电与全方位保护功能,功率达5kw,智能控制与在线升级,STM32储能逆变器技术资料:原理图、PCB与源代码集成,智能并网充电放电及全方位保护功能,功率高达5KW,STM32储能逆变器资料,提供原理图,pcb,源代码。 基于STM32F103设计,具有并网充电、放电;并网离网自动切;485通讯,在线升级;风扇智能控制,提供过流、过压、短路、过温等全方位保护。 功率5kw。 ,核心关键词:STM32F103;储能逆变器;原理图;PCB;源代码;并网充电;放电;自动切换;485通讯;在线升级;风扇控制;全方位保护;功率5kw。,STM32F103储能逆变器:5kw功率,并网智能控制,全保护通讯系统源码及设计原理

    城市群政策DID.xlsx

    家级城市群是城市发展到成熟阶段的最高空间组织形式,由在地域上集中分布的若干特大城市和大城市集聚而成的庞大的、多核心、多层次城市集团,是大都市区的联合体。 中国先后批复了10个国家级城市群:长江三角洲城市群、粤港澳大湾区、成渝城市群、长江三角洲城市群、哈长城市群、中原城市群、北部湾城市群、关中平原城市群、呼包鄂榆城市群、兰西城市群。 国家级城市群是城市发展到高级阶段的产物,具有地域集中、基础设施发达、经济联系紧密等特征,并在国家经济和社会发展中发挥着重要的战略定位和功能。 数据名称:国家级城市群政策DID 数据年份:2003-2023年 ## 02、相关数据 省份代码、省份、城市代码、城市、年份、城市群政策、政策获批时间。

    电脑直接通过RS485通讯控制伺服电机,省却PLC,LabVIEW实现Modbus控制台高效运动控制,LabVIEW直接控制伺服电机:跳过PLC,RS485通讯实现精准运动控制,LabVIEW通过mo

    电脑直接通过RS485通讯控制伺服电机,省却PLC,LabVIEW实现Modbus控制台高效运动控制,LabVIEW直接控制伺服电机:跳过PLC,RS485通讯实现精准运动控制,LabVIEW通过modbus控制台达伺服电机,不需要经过PLC,电脑通过RS485通讯直接控制伺服电机,在一些只是运动控制的项目中,可以省下买PLC的钱 ,LabVIEW; Modbus控制; 伺服电机控制; RS485通讯; 运动控制项目; PLC替代方案,LabVIEW直控伺服电机:RS485通讯,省去PLC投资成本

    基于HTML+CSS+JS的 商品购物项目.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    永磁同步电机三电平无差拍电流预测控制策略与参数辨识策略改善鲁棒性性能研究,永磁同步电机三电平无差拍电流预测控制:参数辨识策略改善鲁棒性与应对模型参数突变,永磁同步电机三电平无差拿电流预测控制,并采用参

    永磁同步电机三电平无差拍电流预测控制策略与参数辨识策略改善鲁棒性性能研究,永磁同步电机三电平无差拍电流预测控制:参数辨识策略改善鲁棒性与应对模型参数突变,永磁同步电机三电平无差拿电流预测控制,并采用参数辨识策略改善鲁棒性,电机模型参数可变,电感参数和磁链参数发生突变后,通过参数辨识策略提高鲁棒性。 ,永磁同步电机;三电平无差拍电流预测控制;参数辨识策略;鲁棒性;电机模型参数可变;电感参数突变;磁链参数突变;提高鲁棒性。,参数辨识策略优化永磁同步电机三电平无差拍电流预测控制,提升鲁棒性应对电感磁链突变

    3D结构光扫描仪,物电学院,第四届光电设计竞赛,光栅投影,格雷码.zip

    电赛

    微网优化与综合能源系统:Matlab与Cplex优化程序集成包,专业福利等你来享,微网优化与综合能源系统:Matlab与Cplex等高效工具打包福利礼物等你来领!欢呼,火火微网优化,综

    微网优化与综合能源系统:Matlab与Cplex优化程序集成包,专业福利等你来享,微网优化与综合能源系统:Matlab与Cplex等高效工具打包福利[礼物]等你来领![欢呼],[火][火]微网优化,综合能源系统优化,matlab cplex等优化程序,全部打包带走。 [钉子]福利福利 欢迎咨询[送花][送花] ,火;微网优化;综合能源系统优化;优化程序;matlab;cplex;福利咨询,火网优化全包揽:综合能源系统Cplex优化程序,Matlab解决方案大放送!

    探索硅基生命哲学与技术路径 -基于混沌-秩序理论探讨硅基生命可能性及其应用前景

    内容概要:文章介绍了作者针对硅基生命的哲学思考和技术设想。主要内容围绕如何通过混沌-秩序转化使非生命体获取生命特征展开讨论,尤其关注在人工智能环境中实现这一点的可能性,并提出了具体的实施步骤和潜在的应用场景。作者借助 deepseek 进行了一些理论测试,并得到肯定反馈,认为相关研究处于先驱地位。 适用人群:本文适合对跨学科研究感兴趣的研究者、哲学家、科学家、工程师以及关注科技发展对未来社会影响的社会各界人士。 使用场景及目标:①帮助读者理解和探索硅基生命的概念;②提供一种新的思维方式来指导未来的人工智能设计;③促进跨领域合作以进一步推进这项前沿科研项目的发展;④探讨在实际场景中的落地实施,如建立火星上的硅基生命实验场,改造火星环境,以及实现人类与硅基生命的和谐共存和互利共赢。 其他说明:虽然文中提及的内容充满想象力且具有开创意义,但作者同时也指出,许多具体细节特别是编码方面的问题尚未完善,因此需要更多专家参与才能实现最终目标。此外,该作品中融入了大量的传统文化元素和个人见解,这些都构成了独特的视角,使其既富有挑战性也颇具启发性。

    基于SSM的在线购物系统.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    北京大学-DeepSeek系列-提示词工程和落地场景

    内容概要:该文出自北京大学内部研讨会,详细讲解了 DeepSeek 提示词工程技术,涵盖了 DeepSeek 引擎的技术优势及其广泛应用场景。文章介绍了DeepSeek的特点,如模型思考过程的可视化及其在全球范围内的竞争优势(比如开源、低成本、国产化优势等)。重点讲解了几种实用的提示词技巧,例如如何让人与AI的交互更简单,如真诚直接交流、通用公式、使用「说人话」、「反向PUA」、「模仿语气」等方式提高提示词的有效性。文中提及多个DeepSeek应用实例,涵盖工作、学术及日常生活中的场景,展示了DeepSeek的多功能性及其在各个行业中的人机协作优势,包括直接使用方式(在线平台和应用程序)、提示词优化技巧及其在不同领域中的应用场景。文章的目的是让不具备专业技术背景的人也可以充分利用AI的能力。此外,提供了学习材料和技术文献供有兴趣深入了解的用户。 适用人群:适用于希望通过了解和使用 DeepSeek 技术来提高工作效率和生活质量的企业管理者、技术人员以及广大非技术用户。 使用场景及目标:①学习如何高效利用 DeepSeek 的提示词功能;②应用于专业场景如办公自动化、医学诊疗;③用于教育与培训领域以优化课堂教学;④应用于个人日常生活中,如健身计划、理财建议等;⑤探索商业创新的可能性,如电商平台优化、品牌故事叙述等。 其他说明:文中不仅包含了对 DeepSeek 功能特性的详细介绍,还有实际应用场景的成功案例分享,并提供了进一步的学习资料和在线资源供参考。通过本篇文章可以帮助读者掌握更专业的AI操作技能并为未来的研究与发展指明了方向。

Global site tag (gtag.js) - Google Analytics