偶然在网上看到有人问:如何利用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里,即可对其中的记录进行排序。然后可以根据自己的需要取出其中的前几条或后几条记录。
分享到:
相关推荐
总之,利用J2ME和RMS,我们可以创建一个功能丰富的电话本应用,即使在资源有限的移动设备上也能有效地管理和组织联系人信息。通过深入理解RMS的工作原理和API,开发者可以构建更多复杂的应用,满足各种数据存储需求...
在这个"j2me RMS记录管理系统 备忘录"项目中,开发者创建了一个备忘录应用,用户可以添加、查看、编辑和删除他们的备忘事项。 1. **Prj3.jar**:这是一个编译后的Java应用程序档案,包含了整个项目的所有类文件和...
然而,开发者需要注意不同设备可能对RMS支持的差异,进行适当的兼容性测试。 总的来说,J2ME的RMS数据存储系统是一个强大且实用的工具,虽然它的API相对简单,但深入理解和应用能帮助开发者构建出更加功能完备的...
3. **RecordComparator接口**:用于自定义记录排序规则。 ### 二、创建记录存储区 首先,我们需要创建一个记录存储区,这可以通过调用`RecordStore.openRecordStore(String name, boolean createIfNecessary)`方法...
3. **RecordComparator**: 这是一个接口,允许开发者自定义记录排序的规则。通过实现此接口,可以按照特定的逻辑对RecordStore中的记录进行排序。 4. **RecordListener**: 提供了监听RecordStore变化的能力。当...
本文将深入探讨如何在J2ME上利用RMS来存储和管理记录,包括创建、读取、更新、删除记录以及实现记录的排序和枚举。 ### 创建记录存储 在J2ME中,`javax.microedition.rms.RecordStore`类是RMS的核心组件,它提供了...
这可能涉及到对RMS中的记录进行遍历和比较,实现快速搜索算法。 4. 联系人列表排序:根据联系人的姓名进行排序,提供有序的视图,便于用户浏览。这可能利用到Java的排序算法,如快速排序或归并排序。 三、J2ME UI...
总的来说,"手机成绩管理系统 j2me"是一个利用J2ME技术实现的移动应用,它展示了如何在资源受限的环境下实现数据管理和用户交互。对于学习J2ME或移动开发的初学者来说,这是一个很好的实践项目,可以帮助他们理解和...
RecordComparator用于对RecordStore中的记录进行排序。 3. **RecordStore操作**:创建、打开、删除RecordStore是RMS的基础操作。创建RecordStore时,需要指定名称和最大记录数。打开RecordStore时,如果不存在则会...
9. **StoreExample.java**:可能是一个关于如何使用J2ME进行数据存储的示例,可能涵盖了不同的存储选项,如文件系统或RMS。 10. **checkMediaSupportsMIDlet.java**:这个MIDlet可能检查设备对特定媒体类型的支持,...
从给定的文件信息来看,我们正在探讨的是一...总结来说,这个案例不仅展示了如何在J2ME平台上构建一个简单的游戏得分系统,而且还深入介绍了如何利用RMS进行数据管理和操作,这对于理解和开发J2ME应用是非常有价值的。
《RMS数据管理程序设计》文档主要探讨了Java ME(J2ME)环境中移动设备上的数据存储机制,尤其是MIDP(Mobile Information Device Profile)的记录管理系统(Record Management System,简称RMS)。RMS为小型设备...
使用MyEclipse,你可以编写Java代码,同时利用其内置的代码编辑器、调试器和模拟器进行开发和测试。 Wireless Toolkit 2.5.2,也称为Sun Java Wireless Toolkit,是Sun Microsystems(现在Oracle)提供的一个开发...
3. **记录过滤和排序**:根据特定条件筛选和排序记录。 【基本类的使用】 了解和熟练使用Java的基本类型类,如Boolean、Byte、Character、Integer、String、StringBuffer、Float、Double、Long,以及它们的方法,...
每个MIDlet套件都可以利用RMS创建一个或多个记录存储,每一个记录存储都具有唯一的名称标识。 - **操作**:在`javax.microedition.rms`包中,提供了创建、打开、关闭、读取、写入、更新记录存储等基本操作,同时也...
每个联系人记录都可以被视为一个RMS记录,包含姓名、电话号码、电子邮件地址等字段。 4. 用户界面设计: 为了提供良好的用户体验,PhoneBook采用了直观的菜单和对话框设计。用户可以轻松浏览联系人列表,通过键盘...