gpt4 book ai didi

android - 使用 Collections.sort() 对对象进行排序。遇到错误

转载 作者:行者123 更新时间:2023-11-29 00:26:23 25 4
gpt4 key购买 nike

我正在尝试使用 Collections.sort() 对 java 中的对象列表进行排序。但我不断收到此错误:类型参数不在其范围内”。有谁知道我该如何解决这个问题?

我的代码

   public List<String> fetchNumbersForLeastContacted()
{


List<String> phonenumberList = getUniquePhonenumbers();
List<TopTen> SortList = new ArrayList<TopTen>();


Date now = new Date();
Long milliSeconds = now.getTime();

//Find phone numbers for least contacted
for (String phonenumber : phonenumberList)
{



int outgoingSMS = fetchSMSLogsForPersonToDate(phonenumber, milliSeconds).getOutgoing();
int outgoingCall = fetchCallLogsForPersonToDate(phonenumber, milliSeconds).getOutgoing();

//Calculating the total communication for each phone number
int totalCommunication = outgoingCall + outgoingSMS;

android.util.Log.i("Datamodel", Integer.toString(totalCommunication));

SortList.add(new TopTen(phonenumber, totalCommunication, 0));

}

//This is where I get the error
Collections.sort(SortList);

TopTen.class

public class TopTen {

private String phonenumber;
private int outgoing;
private int incoming;


public TopTen (String phonenumber, int outgoing, int incoming)
{
this.phonenumber = phonenumber;
this.incoming = incoming;
this.outgoing = outgoing;


}

public String getPhonenumber() {
return phonenumber;
}

public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}

public int getOutgoing() {
return outgoing;
}

public void setOutgoing(int outgoing) {
this.outgoing = outgoing;
}

public int getIncoming() {
return incoming;
}

public void setIncoming(int incoming) {
this.incoming = incoming;
}}

最佳答案

public static void sort (List<T> list)

只有 T 实现了 Comparable 接口(interface)时才能使用此方法。 implements Comparable 的意思是存在一个标准,可以根据该标准比较和排序两个 T 类型的对象。在你的例子中,TTopTen,它没有实现 Comparable

你需要做什么:

public class TopTen  implements Comparator<TopTen> {

....
....

@Override
public int compareTo(TopTen other) {

if (this == other) return EQUAL;

return this.getPhonenumber().compareToIgnoreCase(other.getPhonenumber());

}

这将根据 phonenumber 字段比较两个 TopTen 对象。如果您希望根据其他条件对对象进行排序,请使用该条件返回 -1(之前)、0(等于)或 1(之后)。

例如,要根据 incoming 进行排序,请使用以下内容:

@Override
public int compareTo(TopTen other) {

final int BEFORE = -1;
final int EQUAL = 0;
final int AFTER = 1;

if (this == other) return 0;

if (this.getIncoming() > other.getIncoming()) {
return AFTER;
} else if (this.getIncoming() < other.getIncoming()) {
return BEFORE;
} else {
return EQUAL;
}

}

这将使您的 TopTen 对象按升序 incoming 字段值排序。

关于android - 使用 Collections.sort() 对对象进行排序。遇到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19063757/

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