Hen*_*sel 2 java blackberry list
我很好奇.可能是比较器在每个应用程序启动时随机播放条目的原因是什么?
final static class ContactsListComparator implements Comparator
{
public int compare(Object o1, Object o2)
{
if((o1.toString().compareTo(o2.toString()))<0)
{
return -1;
}
if((o1.toString().compareTo(o2.toString()))>0)
{
return 1;
}
else
{
return 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
首次应用开始:

第二个App Start

如答案所述
比较器实际上比较了自定义对象Contact
public class Contact
{
// Members
private String _contactFirstName;
private String _contactLastName;
private long _contactLastModified;
// Constructor
public Contact()
{
set_contactLastModified();
}
public Contact(String contactFirstName)
{
_contactFirstName = contactFirstName;
set_contactLastModified();
}
// Accessable Getters
public String get_contactFirstName()
{
return _contactFirstName;
}
public String get_contactLastName()
{
return _contactLastName;
}
public long get_contactLastModified()
{
return _contactLastModified;
}
public void set_contactLastModified()
{
_contactLastModified = System.currentTimeMillis();
}
}
Run Code Online (Sandbox Code Playgroud)
Jor*_*orn 14
您的toString方法可能不会覆盖表示联系人的对象.它将返回这些对象的哈希字符串,每次运行应用程序时都会有所不同.
您可以通过以下两种方式解决此问题:
toString()方法Contact以返回联系人的姓名(1)或Comparator,Comparator<Contact>以便将Contact对象作为参数(2)对于(1),将其添加到您的Contact类:
@Override public String toString() {
return get_contactFirstName();
}
Run Code Online (Sandbox Code Playgroud)
对于(2)你最终会得到这个比较器的实现:
final static class ContactsListComparator implements Comparator<Contact> {
public int compare(Contact o1, Contact o2) {
return contact1.get_contactFirstName().compareTo(contact2.get_contactFirstName());
}
}
Run Code Online (Sandbox Code Playgroud)
你甚至不需要检查<0或> 0,但你可以返回字符串比较给出的任何内容.
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |