如何按字母顺序对String数组对象列表进行排序。
我按如下方式设置我的列表:
List CurrentRankingsList = rankings.getRankings();
我有一个这样的String对象列表:
[["Dwayne","5"], ["Bill","4"], ["James","3"], ["Sally","3"]]
如何按字母顺序对名称进行排序,同时保持列表结构,例如[["Bill","4"], ["Dwayne","5"], ["James","3"], ["Sally","3"]]
我尝试过以下但是列表没有正确排序
(Updated code from original question )
Collections.sort(CurrentRankingsList, new Comparator<Rankable>()
{
@Override
public int compare(Rankable o1, Rankable o2) {
// TODO Auto-generated method stub
String testo1=o1.getObject().toString();
String testo2=o2.getObject().toString();
int x = o1.getObject().toString().compareTo(o2.getObject().toString());
return o1.getObject().toString().compareTo(o2.getObject().toString());
}
}) ;
在调试比较时,我们得到一个Paul(o1.GetObject.ToString)vs Nathan(o2.GetObject.ToString)
答案 0 :(得分:2)
如何按字母顺序对String数组对象列表进行排序。
ArrayList<String[]>
,List<String[]>
的集合,否则Collection将被视为原始类型,我们将面临类型不安全操作的运行时错误开销。您需要将String[]
作为类型传递给Comparator
Collections.sort(CurrentRankingsList, new Comparator<String[]>()
{
@Override
public int compare(String[] o1, String[] o2) {
// TODO Auto-generated method stub
return o1[0].compareTo(o2[0]);
}
}) ;
假设CurrentRankingsList
是数组字符串列表。
对于这种情况,更简洁的方法是声明一个类,例如,Player
具有两个属性(名称,等级),然后根据该类的实例进行排序。
class Player
{
String name;
int rank;
// your other code with constructor and getter, setter method
}
ArrayList<Player>currentRankingsList = new ArrayList<>();
Collections.sort(CurrentRankingsList, new Comparator<Player>()
{
@Override
public int compare(Player o1, Player o2) {
// TODO Auto-generated method stub
return o1.getName().compareTo(o2.getName());
}
}) ;