mysql排序行号_mysql 取得行号后再排序
一.理论准备
Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。
TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。
Map.Entry返回Collections视图。
二.key排序
TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,如下:
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class TreeMapTest {
public static void main(String[] args) {
Map map = new TreeMap(
new Comparator() {
public int compare(String obj1, String obj2) {
// 降序排序
return obj2.compareTo(obj1);
}
});
map.put("b", "ccccc");
map.put("d", "aaaaa");
map.put("c", "bbbbb");
map.put("a", "ddddd");
Set keySet = map.keySet();
Iterator iter = keySet.iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println(key + ":" + map.get(key));
}
}
}
运行结果如下:
d:aaaaa
c:bbbbb
b:ccccc
a:ddddd
三.value排序
上面例子是对根据TreeMap的key值来进行排序的,但是有时我们需要根据TreeMap的value来进行排序。对value排序我们就需要借助于Collections的sort(List list, Comparator super T> c)方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是有一个前提条件,那就是所有的元素都必须能够根据所提供的比较器来进行比较,如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class TreeMapTest {
public static void main(String[] args) {
Map map = new TreeMap();
map.put("a", "ddddd");
map.put("c", "bbbbb");
map.put("d", "aaaaa");
map.put("b", "ccccc");
//这里将map.entrySet()转换成list
List> list = new ArrayList>(map.entrySet());
//然后通过比较器来实现排序
Collections.sort(list,new Comparator>() {
//升序排序
public int compare(Entry o1,
Entry o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
for(Map.Entry mapping:list){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
}
运行结果如下:
d:aaaaa
c:bbbbb
b:ccccc
a:ddddd
这个结合mysql取得行号并排序来讲解
package mysqlTest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class mysqlTest2 {
public static void main(String arg[]) {
try {
Connection con = null; // 定义一个MYSQL链接对象
Class.forName("com.mysql.jdbc.Driver").newInstance(); // MYSQL驱动
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/Demo", "root", "root"); // 链接本地MYSQL
Statement stmt; // 创建声明
stmt = con.createStatement();
String str = "Select name,(@rowNum:=@rowNum+1) as rowNo,score From mysqlSort,"
+ "(Select (@rowNum :=0) ) b Order by mysqlSort.score Desc";
ResultSet res = stmt.executeQuery(str);
Map map = new TreeMap();
while (res.next()) {
map.put(res.getString(1), res.getInt(2));
}
Map map1 = new TreeMap();
for (Map.Entry m : map.entrySet()) {
map1.put(m.getKey(), m.getValue());
}
List> list = new ArrayList>(map1.entrySet());
Collections.sort(list, new Comparator>() {
public int compare(Entry o1, Entry o2) {
// TODO Auto-generated method stub
return o2.getValue()-o1.getValue();
}
});
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + ":" + m.getValue());
}
System.out.println("============");
for (Map.Entry m : list) {
System.out.println(m.getKey() + ":" + m.getValue());
}
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
mysql 取得行号后再排序
标签:
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:http://www.cnblogs.com/chengpeng15/p/5975815.html
mysql排序行号_mysql 取得行号后再排序相关推荐
- mysql 分组行号_mysql 显示行号,以及分组排序
建表: CREATE TABLE `my_tb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_code` varchar(255) DEFAULT ...
- mysql如何使用命令行操作_MySQL命令行基本操作
本文记录的是windows7系统下Mysql的命令行基本操作. 一.MySQL启动与登录 1. MySQL启动: 通过运行mysql安装目录下的/bin/mysqld.exe文件来启动Mysql服务. ...
- mysql 行号_mysql的行号问题
1.行号问题行号是指按顺序为查询结果集的行分配的连续整数.Mysql数据库在行号方面的支持并不是十分友好,没有橡其他数据库一样提供类似的row_number解决方案,因此得到行号是一个十分有技巧的问题 ...
- mysql 命令行访问_Mysql 命令行模式访问操作mysql数据库操作
使用环境 在cmd模式下输入 mysql --version (查看mysql安装的版本). 完整的命令可以通过mysql --help来获取. 本测试使用的Mysql版本是mysql5, 本测试使用 ...
- mysql命令行语句_MySql命令行命令和SQL语句
一.常用mysql命令行命令 1.启动MYSQL服务 net start mysql 停止MYSQL服务 net stop mysql 2.netstat -na|findstr 3306 查看被监听 ...
- mysql账户最小授权_mysql 创建帐号并授权
数据库安装请参考:http://youngbrick.iteye.com/blog/2335851 创建数据库: MariaDB [mysql]> create database mydbtes ...
- mysql生成行号_MySQL生成行号
引言 在mysql数据库使用过程中,发现没有像db2那样方便能自动生成行号,于是通过网络查阅资料,现整理如下,方便以后自己查阅. 创建数据库 CREATE DATABASE -- 创建数据库 IF N ...
- mysql数据库管理系统模式_MYSQL命令行模式管理MySql的一点心得
MYSQL命令行模式管理MySql的一点心得 MYSQL命令行模式管理MySql的一点心得 MySql数据库是中小型网站后台数据库的首选,因为它对非商业应用是免费的.网站开发者可以搭建一个" ...
- mysql导入指定数据库_mysql命令行导入sql文件到指定数据库的方法
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 第四章: ls 有一些我们常用的参数, 比如我们要知道当前目录的所有内容, 包括隐藏文件夹和文件和所有属性, 例 [roo ...
最新文章
- openoj的一个小比赛(F题解题报告)poj3978(dp+素数筛选)
- nssl1187-排列【dp,随机卡常,树状数组】
- 论文浅尝 | KGAT: 用于推荐的知识图注意力网络
- 知识图谱最新权威综述论文解读:知识图谱补全部分
- (计算机组成原理)第二章数据的表示和运算-第二节2:原码、反码、补码和移码的作用
- 《论文笔记》Robust Cooperative UAV Visual SLAM
- Redis解决秒杀中一人一单问题
- luasql在Fedora20下的安装与使用示例
- 发一个招聘启事,成都有兴趣的朋友可以来看一看。
- linux网络编程(一)
- 极验验证码(6.0.9)破解(一) 之 抓包分析
- [4G5G专题-106]:部署 - LTE无线网络规划与设计概览
- ios设置tabbar背景颜色_IOS UITabBarViewController 修改背景颜色
- CNN模型压缩——使用网络稀疏化方法(Learning Effcient Convolutional Network through Network Sliming)
- everything无法搜索刚插入的硬盘中的文件
- java自动拼图_java 拼图游戏完整源码,图片剪切,包含拼图自动还原功能
- 未来教育二级mysql怎么做题_计算机二级买了未来教育,但是不知道该怎么学习,就是单纯的刷题吗?感觉没有书有点不习惯,怎么办?...
- [Python] 七段数码管绘制
- 李宏毅《机器学习》误差
- MATLAB simulink 模型验证学习笔记
热门文章
- Java 的发展(历史)轨迹和历史变迁
- Tableau数据分析:NC Retail Order Data(英)Data Science Program Lab#1(GTI)
- html中如何让字段闪烁,Javascript结合CSS实现边框闪烁提示
- java 网页正文抽取算法_网页正文抽取算法 ContentExtractor
- php mysql会员注册_PHP实现会员注册系统
- 用ubuntu远程连接mysql_Ubuntu 安装 MySQL 和远程连接
- rk3288 android编译环境搭建,RK3288系统编译及环境搭建
- 自学python在家怎么上班_【经验分享】转行如何自学Python并且找到工作,分享自己心得...
- linux删除文件夹和文件
- OpenCV学习(二十) :分水岭算法:watershed()