Mysql好像不提供排名函数.
网络上的其他什么方法好像可以排序,
也有些对于同分数算名次的处理不够好.
正好工程里有写的排序list (SortListTools)
就在它之上进行了一下扩展.
排序+算名词.其实很简单的.
一般sql查询出来的结果格式为:
list:{[map][map][map][map][map]....}
针对map的某一列排名操作.
rankList方法为传入要排序的list,设置排序列,设置输出名词列.
返回就是排序之后的List.
/**
*
* 这里填写类说明
* @author Juz
* Mar 30, 2012
*/
@Deprecated
public class SortListTools implements Comparator{
private String key;
//property
public void doSortkey (String key) {
this.key = key;
}
public int compare(Object arg0, Object arg1) {
Map m1 = (Map) arg0;
Map m2 = (Map) arg1;
int flag = 0;
float id1 = Float.parseFloat(m1.get(key).toString());
float id2 = Float.parseFloat(m2.get(key).toString());
if ( id2 > id1) {
flag = 1;
}else if (id1 < id2) {
flag = -1;
}
return flag;
}
}
/**
* List指定列排名.
* @param liinfo list:{[map][map][map]....}
* @param string key 指定排序map的key
* @param string minckey 指定输出排序的key
* @return List
* @author Juz
*/
public List rankList(List liinfo, String key, String minckey) {
// TODO Auto-generated method stub
int thisv = 1;
int nextv = 0;
float sscore =0;
float tscore =0;
Map thism =null;
Map nextm = null;
SortListTools st = new SortListTools();
st.doSortkey(key);
Collections.sort(liinfo, st);
for(int i=0;i<liinfo.size();i++){
((Map)liinfo.get(i)).put(minckey, i+1);
}
for(int i=0;i<liinfo.size();i++){
if(i<liinfo.size()-1){
thism = (Map)liinfo.get(i);
thisv = Integer.parseInt(thism.get(minckey).toString());
sscore = Float.parseFloat(thism.get(key).toString());
nextm = (Map)liinfo.get(i+1);
tscore = Float.parseFloat(nextm.get(key).toString());
if(sscore-tscore<0.0001){
nextm.put(minckey, thisv);
}else{
nextm.put(minckey, thisv+1);
}
}
}
return liinfo;
}
分享到:
相关推荐
在这个"MySQL_数据库实现的JAVA_分页实例"中,我们将探讨如何在Java后端实现对MySQL数据库的分页查询,这对于大数据量的展示和优化用户体验至关重要。 首先,理解分页的基本概念:分页是将大量数据分为多个小部分,...
标题中的“JAVA 注册界面连数据库+集合排序”揭示了两个主要的知识点:Java编程以及数据库连接,特别是与MySQL数据库的交互,同时涉及到数据结构的排序处理。 首先,让我们深入探讨Java编程。Java是一种广泛使用的...
总结来说,"JFinal 实例(mysql数据库)"是一个展示如何利用 JFinal 框架和 MySQL 数据库开发 Web 应用的示例。通过这个实例,我们可以学习到如何设置数据库连接、创建 Model 类、执行 SQL 查询以及处理事务。这个...
总的来说,MyBatisPlus的`orderBy`、`orderByDesc`和`orderByAsc`方法极大地方便了我们在Java代码中对数据库查询结果进行排序,提高了开发效率。通过灵活运用这些方法,我们可以轻松地创建出符合需求的查询逻辑,让...
本教程将详细讲解如何在Java中实现不分框架的分页查询,同时涵盖对MySQL和SQL Server数据库的支持。 一、基础知识 1. 分页概念:分页是将大量数据按一定数量分成若干部分,每次只加载一部分到内存中显示,用户可以...
Java和数据库技术是IT行业中不可或缺的部分,特别是在软件开发和数据管理领域。以下是对"Java+数据库面试题.zip"中可能包含的重要知识点的详细说明: 1. **Java基础**: - **面向对象编程**:包括类、对象、封装、...
总的来说,Hibernate通过其强大的ORM能力简化了Java与MySQL数据库的交互,提供了丰富的查询方式和事务管理机制,极大地提高了开发效率。掌握这些核心知识点,对于提升JavaEE项目的开发质量与效率有着重要作用。希望...
本压缩包文件“从Mysql数据库中导出表结构信息到Excel中.zip”显然涉及到两个关键知识点:如何从Mysql数据库导出表结构,并将这些信息转换成Excel格式。 首先,我们来看如何从Mysql数据库导出表结构信息。这通常...
### MySQL数据库常用命令详解 #### 一、连接MySQL服务器 - **命令格式**:`mysql -u 用户名 -p` - `-u` 后跟用户名; - `-p` 后可直接输入密码或按回车键后提示输入密码。 #### 二、创建数据库 - **命令格式**:...
这个项目可以教授如何使用Java集合框架,如List、Set和Map,以及如何实现数据的排序和过滤。同时,也可能涉及到文件操作,例如保存和读取学生数据到CSV或XML文件。 通过这些项目,读者不仅可以掌握Java编程基础,还...
Java作为后端开发语言,负责处理前端发送的Ajax请求,查询MySQL数据库,并返回所需的数据。这里可能涉及到Spring Boot或Servlet等框架,用于构建RESTful API,以便前端通过HTTP请求获取数据。同时,Java还可能负责...
在这个“Java和Mysql的分页程序”中,我们将探讨如何利用Java进行数据库连接管理,以及如何设计有效的MySQL分页查询。 首先,Java中的数据连接池是一种管理数据库连接的有效机制,它能显著提高应用的性能和效率。...
6. **处理结果**:将查询结果转化为Java对象,比如List集合,以便在前端展示。 7. **发送响应**:将数据包装到HTTP响应中,通常是JSON或HTML格式,然后通过ServletResponse对象发送回客户端。 8. **关闭资源**:...
### MySQL 递归查询树型结构的代码逻辑详解 ...这种方法不仅适用于MySQL,对于其他支持递归查询的数据库也同样适用。在实际项目开发中,合理利用递归查询能够极大地简化对层次结构数据的操作和处理。
9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的性能 ...
在Java开发中,DWR(Direct Web Remoting)是一个强大的工具,它允许JavaScript与服务器端的Java代码进行实时交互,从而实现动态Web应用。在这个场景中,"java_DWR递归函数实现城市的省市县三级联动" 提供了一个利用...
MySQL数据库提供了`LIMIT`关键字,用于实现数据的分页查询,但直接在Java代码中处理可能会导致SQL语句过于复杂,不易维护。基于此,我们讨论的是一种名为"基于MySQL LIMIT的Java分页小插件"的工具,它可以帮助开发者...
9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的...
- **B+Tree索引**:最常用的索引类型,适合范围查询和排序。 - **Hash索引**:适合等值查询,但在某些情况下可能不支持范围查询。 - **SQL查询优化**:合理的索引策略和优化的SQL语句可以显著提升查询效率,例如...
+ 7.1.5 数据库,表,索引,列和别名的命名 # 7.1.5.1 名字的大小写敏感性 o 7.2 用户变量 o 7.3 列类型 + 7.3.1 列类型的存储要求 + 7.3.5 数字类型 + 7.3.6 日期和时间类型 # 7.3.6.1 问题和日期类型 # ...