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