我很新的Java時,我纔剛剛開始學習它爲我的計算機科學大學課程。Java - 如何排序這個ArrayList?
我正在寫一個程序,有一個ArrayList
持有Personality
對象稱爲individual
,在PersonalityList
類中聲明這樣:private ArrayList<Personality> individual;
這些Personality
對象保存稱爲int
類型的votes
私有字段。 rankedList
- -
我也曾在PersonalityList
類,但用不同的名稱聲明相同ArrayList
像這樣:private ArrayList<Personality> rankedList;
在我的節目,我得到一個名爲top(int value)
方法。在這種方法中,我試圖用while循環通過individual
名單看,獲得從該列表中的對象提供的索引數量低於value
參數的值,將其添加到rankedList
列表,然後排序在rankedList
列表爲了他們的votes
領域,與得票最高數量來第一次在列表中的對象(索引:0)。目前,這是我的top
方法:
public void top(int value)
{
int index = 0;
int listSize = individual.size();
rankedList = new ArrayList<Personality>();
if(value > listSize) {
value = listSize;
}
else {
System.out.println("Error: Enter a positive integer value.");
}
if(listSize > 0) {
while(index < value) {
Personality prsn = individual.get(index);
rankedList.add(prsn);
System.out.println(prsn.getDetails());
index++;
}
}
else {
System.out.println("Error: The array list has no personalities stored inside it.");
}
}
我目前印刷用getDetails()
方法while循環得到每個Personality
對象的詳細信息(包含對象字段)在Personality
類中定義,簡單地檢查它會獲得正確數量的對象。
我知道我需要使用Collections.sort
功能來查看其他堆棧溢出帖子,但是,即使在查看這些帖子的答案後,我也不知道如何將其實施到我的代碼中。我已經嘗試過,但我不斷收到錯誤,我不明白。
任何幫助,優選特定的代碼,將是非常理解的。謝謝!
UPDATE:
感謝您的示例代碼@camickr。 在我的個性I類添加以下代碼:
static class votesComparator implements Comparator<Personality>
{
public int compare(Personality p1, Personality p2)
{
return p1.getVotes() - p2.getVotes();
}
}
我還編輯我top
方法在我PersonalityList
類這樣的:
if(listSize > 0) {
while(index < value) {
Personality prsn = individual.get(index);
rankedList.add(prsn);
System.out.println(prsn.getDetails());
index++;
}
Collections.sort(rankedList);
System.out.println("Sort by Natural order");
System.out.println("\t" + people);
}
else {
System.out.println("Error: The array list has no personalities stored inside it.");
}
但是現在我就在其中指出的錯誤「找到的排序(java.util.List中)」沒有合適的方法,稱爲在Collection.sort(rankedList)
。 這是什麼原因?
兩種方法..試試這個http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/ – RamPrakash