【发布时间】:2016-06-26 18:49:37
【问题描述】:
我有一个名为“球员”的 33 个数组中的足球运动员列表。它们都有不同的统计数据,我创建了一个比较器来比较这些统计数据。我想做的是创建两个单独的数组来获取前 11 名球员和后 11 名球员。然后我可以根据这些进行不同的计算。这是我所拥有的:
Set<Player> ascending = new TreeSet<>(comparator);
Collections.addAll(ascending, players);
Player[] sorted = ascending.toArray(new Player[ascending.size()]);
Player[] topEleven = new Player[11];
Player[] bottomEleven = new Player[11];
for(int i=0;i<11;i++){
topEleven[i]=sorted[i];
}
for(int i=0,j=32;i<11;i++,j--){
bottomEleven[i]=sorted[j];
}
这行得通,但是它很笨重并且可能效率不高。有没有更好的方法来做到这一点?
【问题讨论】:
-
有什么特别的理由让你使用数组而不是
java.util.List?如果不是,我建议您使用 List 代替,因为您可以节省一些转换逻辑,并且 List 带有许多方便的方法,可以让您的生活更轻松。 -
@dpr : 是的,我把球员名单组织得井井有条,并且经常移动球员。选择过程由数组中的特定位置(即,players[12])使用。据我所知,这对于列表是不可能的。但我可能是错的!
-
@ShaddAnderson 要么我错过了你的观点,要么你错过了
java.util.List.get(n)的方法。也许您将此与java.util.Set混淆了,后者不提供按索引访问元素的可能性。实际上,我使用数组而不是 List 的唯一情况是 vararg methods。