我有一个名为“玩家”的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];
}
这样的作品,但它很笨重,可能不是很有效。有一个更好的方法吗?
使用https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#headSet(E,%20boolean)和 https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#tailSet(E) – Robert
是否有任何具体原因使用数组而不是'java.util.List' ?如果没有,我会建议使用列表,而不是保存一些转换逻辑和列表来与许多便利的方法,将使您的生活更轻松。 – dpr
@dpr:是的,我保持玩家名单非常有条理,并将玩家移动很多。选择过程由阵列中的特定位置(即玩家[12])使用。据我所知,这是不可能的列表。但我可能错了! –