1. 要求

对List列表中的数据进行排序(正序、倒序),列表中的数据包括:整型(Integer)、字符串(String)、日期(Date)等。对于字符串,要求允许对它按照整型进行排序。

2. 实现思路

1. 对于整型、字符串、日期等数据,可以直接调用Collections.sort方法实现排序(正序、倒序)。

2. 对于字符串按照整型排序,可以写一个类实现Comparable接口,在compare方法中将字符转换为整型进行比较;然后再调用Collections.sort的方法,传进一个Comparator来实现。

3. 实现代码

package com.clzhang.sample.collections;

import java.util.*;

public class CollectionSortTest {
// 字符串按照整型排序比较器
static class Str2IntComparator implements Comparator<String> {
private boolean reverseOrder; // 是否倒序
public Str2IntComparator(boolean reverseOrder) {
this.reverseOrder = reverseOrder;
} public int compare(String arg0, String arg1) {
if(reverseOrder)
return Integer.parseInt(arg1) - Integer.parseInt(arg0);
else
return Integer.parseInt(arg0) - Integer.parseInt(arg1);
}
}


public static void main(String[] args) throws Exception {
// 生成测试数据
List<String> list = new ArrayList<String>();
list.add("1001");
list.add("1002");
list.add("1003");
list.add("1");
list.add("2");
list.add("3");
list.add("11");
list.add("12");
list.add("13"); // 整型、字符串、日期都是类似的操作;下面只给出字符串的示范
System.out.println("当前顺序...");
System.out.println(list); Collections.sort(list);
System.out.println("默认排序后...");
System.out.println(list); Collections.sort(list, Collections.reverseOrder());
System.out.println("倒序后...");
System.out.println(list); Collections.sort(list, new Str2IntComparator(false));
System.out.println("按整型排序后...");
System.out.println(list); Collections.sort(list, new Str2IntComparator(true));
System.out.println("按整型倒序后...");
System.out.println(list);
}
}

输出:

当前顺序...
[1001, 1002, 1003, 1, 2, 3, 11, 12, 13]
默认排序后...
[1, 1001, 1002, 1003, 11, 12, 13, 2, 3]
倒序后...
[3, 2, 13, 12, 11, 1003, 1002, 1001, 1]
按整型排序后...
[1, 2, 3, 11, 12, 13, 1001, 1002, 1003]
按整型倒序后...
[1003, 1002, 1001, 13, 12, 11, 3, 2, 1]

Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法的更多相关文章

  1. Java 集合 散列表hash table

    Java 集合 散列表hash table @author ixenos 摘要:hash table用链表数组实现.解决散列表的冲突:开放地址法 和 链地址法(冲突链表方式) hash table 是 ...

  2. JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

  3. 用java在客户端读取mongodb中的数据并发送至服务器

    使用Java自带的socket端口来实现,程序如下: Client.java package com.cn.gao; import java.net.*; import java.io.*; impo ...

  4. JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...

  5. Java程序在向mysql中插入数据的时候出现乱码

    今天在往数据库中插入数据的时候中文字符在数据库中就出现了乱码?网上有各种说法,但是适合我的,最终解决我的问题的只有下面一种! 在创建数据库的时候,注意设置编码方式. CREATE DATABASE ` ...

  6. java集合(1)- 类底层数据结构分析

    Java 集合类图 参考:http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526822.html

  7. java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

    /*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返 ...

  8. SQL语言(二) java怎样连接操作数据库中的数据

    import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.S ...

  9. MySQL中在原表中做数据去重(按日期去重,保留id最小的记录)

    表名称 code600300 delete from code600300 where id not in (select minid from (select min(id) as minid fr ...

  10. Java:几个正则式应用(检查汉字、日期、EMAIL、手机号码的合法性,替换字符串等)

    1. 检查输入是否为合法汉字 /** * 判断输入字符是否为有效汉字 * @param str 字符 * @return 是否合法汉字 */ public static boolean isValid ...

随机推荐

  1. php之快速入门学习-16(PHP 魔术变量)

    PHP 魔术变量 PHP 向它运行的任何脚本提供了大量的预定义常量. 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了. 有八个魔术常 ...

  2. php之快速入门学习-14(php-for循环)

    PHP 循环 - For 循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块. for 循环 for 循环用于您预先知道脚本需要运行的次数的情况. 语法 for (初始值; 条件; ...

  3. Linux对文件归档和压缩(学习笔记八)

    一.归档和压缩 压缩命令工具:gzip,bzip2 归档命令工具:tar 二.压缩 2.1.gzip gzip是一种标准的.广泛应用的文件压缩和解压缩实用工具.gzip允许文件并置.用gzip压缩文件 ...

  4. Linux的网卡由eth0变成了eth1怎么办?

    Linux的网卡由eth0变成了eth1怎么办? Linux的网卡由eth0变成了eth1,如何修复 使用wmware安装了linux,安装成功后,使用的网卡是eth0,没有eth1.但是用过一段时间 ...

  5. PHP 在Win下的安装

    1:安装集成环境,Wamp或者Appserv.可以快速搭建测试环境. 2:分别下载安装 下载 PHP 从此处下载免费的 PHP:http://www.php.net/downloads.php 下载 ...

  6. OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式

    来自:http://cn.openerp.cn/openerp_import_image_by_xmlrpc/ 每当夏秋之交,我们都有展会,展会完后,都有很多的新的潜在客户要添加,我们收了一大堆名片, ...

  7. Windows客户端的JProfiler远程监控Linux上的Tomcat

    1.测试环境 服务器:RedHat Linux 3.4.3-9.EL4(内核版本 2.6.9-5.EL),Tomcat5.5.20,Sun JDK 1.5.0_09,JProfiler 4.3.2 f ...

  8. 腾讯云-搭建 FTP 文件服务

    搭建 FTP 文件服务 目的:搭建认证登录的FTP具有读写权限 安装并启动 FTP 服务 任务时间:5min ~ 10min 安装 VSFTPD 使用 yum 安装 vsftpd: yum insta ...

  9. oracle默认连接数150

    当oracle连接数超过最大的150登录不上 sqlplus / as sysdba   ###报错,提示连接数未释放! ---释放网络连接数 ps -ef |grep ora |grep " ...

  10. Centos6.5搭建dhcpd服务

    dhcpd动态获取ip地址,对于小型局域网很便利的.在不大的网络社会静态ip也是不错的! 环境 centos6.5  10.10.24.1 (dns-server)   winxp sp3 (clie ...