当前位置: 首页 > news >正文

利用J2ME里的RMS对记录进行排序

偶然在网上看到有人问:如何利用RMS对其内的积分进行排序。恰巧最近在总结、沉淀一些工作中的积累,于是就有了这篇文章。

J2ME里RMS对记录进行排序的方法,是借鉴了J2SE里的colletcion框架的处理方法而来的。

我们知道如果Collection框架中的实现类要对其内的Object元素进行排序,要调用Sort()方法,但是其内的Object元素必须要实现Comparable接口。

class Student implements Comaparable{
int num;
String name;

Student(int num,String name){
this.num = num;
this.name = name;
}

public int compareTo(Object o){
Student s = (Student)o;
return num>s.num?1:(num==s.num?0:-1);
}
}

如上面这个student类,如果将其做为Object元素添加到collection实现类中,再调用Sort()方法。将按照compareTo()中的方法对元素进行排序。

在RMS里也是同样的实现机制,要对RMS里的记录进行排序,则应该对相应的RMS调用enumerateRecords(null,comparator,false);这个方法的中间一个参数就是相应的比较器。这个方法返回一个RecordEnumeration对象,RecordEnumeration内存放的就是排序后的记录。

一个典型的RecordComparator实现如下:

RecordComparator comparator = new RecordComparator() {
public int compare(byte[] first, byte[] second) {
try {
DataInputStream isFirst=new DataInputStream(new ByteArrayInputStream(first));
DataInputStream isSecond=new DataInputStream(new ByteArrayInputStream(second));
String firstName = isFirst.readUTF();
int firstScore = isFirst.readInt();
String secondName = isSecond.readUTF();
int secondScore = isSecond.readInt();
if(firstScore != secondScore) {
return firstScore > secondScore ? RecordComparator.PRECEDES : RecordComparator.FOLLOWS;
}
int comp = firstName.compareTo(secondName);
if(comp == 0) {
return RecordComparator.EQUIVALENT;
} else if(comp < 0) {
return RecordComparator.PRECEDES;
} else {
return RecordComparator.FOLLOWS;
}
} catch(IOException e) {
return RecordComparator.EQUIVALENT;

}
}
};

只需要把这个RecordComparator传递到相应的RMS里,即可对其中的记录进行排序。然后可以根据自己的需要取出其中的前几条或后几条记录。

相关文章:

  • 设计模式之职责链(责任链)模式(ResponsibilityChain Pattern)
  • SWT GC的drawLine方法的一个隐藏Bug
  • 多维数组与矩阵之子数组的最大累加和
  • 游戏也是软件,J2ME游戏程序员不能忘本
  • 多维数组与矩阵之子矩阵的最大累加和
  • 本周技术关注:Oracle10G、MSSQL2005、MYSQL5: CLuster、Replication、Snapshot
  • 设计模式之解释器模式详解(Interpreter Pattern)
  • 书评--信息经营法则
  • Java最大公约数与最小公倍数
  • 关于SWT drawLine bug的进一步验证
  • 矩阵乘法
  • IT出版人的Blog世界
  • 关于Java数组,你该了解这些
  • 世界上最难攀登的山其实是自己!
  • 判断一个整数是否为素数
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Android优雅地处理按钮重复点击
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JAVA之继承和多态
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 二维平面内的碰撞检测【一】
  • 关于springcloud Gateway中的限流
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 手写双向链表LinkedList的几个常用功能
  • 微信开放平台全网发布【失败】的几点排查方法
  • 学习JavaScript数据结构与算法 — 树
  • 一个项目push到多个远程Git仓库
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​VRRP 虚拟路由冗余协议(华为)
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #define 用法
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (四)Controller接口控制器详解(三)
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)【Hibernate总结系列】使用举例
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET正则基础之——正则委托
  • ;号自动换行
  • @RestController注解的使用
  • [ 蓝桥杯Web真题 ]-布局切换
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [Android]通过PhoneLookup读取所有电话号码
  • [CISCN2019 华东南赛区]Web11
  • [cocos2d-x]关于CC_CALLBACK
  • [Codeforces] number theory (R1600) Part.11
  • [CTF]php is_numeric绕过
  • [ICCV2017]Neural Person Search Machines
  • [IOI2007 D1T1]Miners 矿工配餐