gpt4 book ai didi

java - android 对数组进行排序

转载 作者:行者123 更新时间:2023-12-01 07:12:13 25 4
gpt4 key购买 nike

我正在尝试对数组进行排序,但由于某种原因,我在compareTo函数中收到以下错误:

Cannot invoke compareTo(int) on the primitive type int

我的代码:

private void sortFriendList()
{
Arrays.sort(friendsList, new Comparator<FacebookUser>() {

@Override
public int compare(FacebookUser lhs, FacebookUser rhs) {
ChatMessage[] firstChatMessages = app.getDatabaseManager().getChatMessages(lhs.getId());
ChatMessage[] lastChatMessages = app.getDatabaseManager().getChatMessages(rhs.getId());
int firstLastMessageTime = (int) firstChatMessages[firstChatMessages.length-1].getTime();
int lastLastMessageTime = (int) lastChatMessages[firstChatMessages.length-1].getTime();
return firstLastMessageTime.compareTo(lastLastMessageTime);
}
});
}

代码应该对存储在 long 类型中的数组购买时间进行排序(我已将其转换为 int)

最佳答案

compareTo 方法仅适用于对象。原始int 不是对象。您必须手动比较 int 值,如果该值小于、等于或大于另一个值,则返回负值、零值或正值。

为此使用 Integer 包装类只是浪费资源。

今天早上我更愿意提供一些代码:

long firstLastMessageTime = ...
long lastLastMessageTime = ...
if (firstLastMessageTime < lastLastMessageTime) {
return -1;
}
if (firstLastMessageTime > lastLastMessageTime) {
return 1;
}
return 0;

在某些情况下,您可以将firstLastMessageTime减去lastLastMessageTime,但是如果您处理负值或者差值可能大于32位int值,则可能会导致错误。因此,为了百分百确定,请始终使用上述方法。

<小时/>

附加评论:

这个值真的是一个int值吗? Java 中通常将时间定义为自 1.1.1970 以来的毫秒数,作为数据类型,该时间很长。

关于java - android 对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12044542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com