0
我有一個用類結果的對象填充的ArrayList,每個結果都有一個名爲value的屬性。我現在想要創建一個數組,其中填充了與ArrayList中相同的內存位置的引用,但現在爲了使對象的最高值位於第一個位置,第二個位置的第二高位等等。從未排序的ArrayList中創建排序後的數組
我已經在這裏搜索,但還沒有發現任何其他帖子喜歡它。
我有一個用類結果的對象填充的ArrayList,每個結果都有一個名爲value的屬性。我現在想要創建一個數組,其中填充了與ArrayList中相同的內存位置的引用,但現在爲了使對象的最高值位於第一個位置,第二個位置的第二高位等等。從未排序的ArrayList中創建排序後的數組
我已經在這裏搜索,但還沒有發現任何其他帖子喜歡它。
有多種方法可以使用Gauava或lambda表達式來解決它。
希望這個實現能夠解決您的問題。
package com;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class TestDemo {
public static void main(String[] args) {
List <HockeyPlayer> players = new ArrayList <HockeyPlayer>();
HockeyPlayer obj1 = new HockeyPlayer();
obj1.goalsScored = 22;
players.add(obj1);
HockeyPlayer obj2 = new HockeyPlayer();
obj2.goalsScored = 11;
players.add(obj2);
HockeyPlayer obj3 = new HockeyPlayer();
obj3.goalsScored = 111;
players.add(obj3);
HockeyPlayer obj4 = new HockeyPlayer();
obj4.goalsScored = 3;
players.add(obj4);
Collections.sort(players, new Comparator <HockeyPlayer>() {
@Override public int compare(HockeyPlayer player1, HockeyPlayer player2) {
return player1.goalsScored - player2.goalsScored;
}
});
for (int i = 0; i < players.size(); i++) {
System.out.println(players.get(i).goalsScored);
}
HockeyPlayer array[] = new HockeyPlayer[players.size()];
players.toArray(array); // contains reference
for (int i = 0; i < array.length; i++) {
System.out.println(array[i].goalsScored);
}
}
}
class HockeyPlayer {
public int goalsScored;
}
爲什麼不只是對您當前的List Collections.sort(yourList,theComparator)進行排序; http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/,如果你確實需要保留舊的,請先克隆它......然後對新的進行排序...... –
https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html可能比mkyong頁面更有用。 – VGR
@ A.Bohlund你問的是比較器的用途。你的問題解決了嗎? – user3437460