Java 对字符串数组对象列表进行排序

Java 对字符串数组对象列表进行排序,java,list,sorting,comparator,Java,List,Sorting,Comparator,如何按字母顺序对字符串数组对象列表进行排序 我的名单如下: List CurrentRankingsList = rankings.getRankings(); 我有一个字符串对象列表,如下所示: [["Dwayne","5"], ["Bill","4"], ["James","3"], ["Sally","3"]] 如何在维护列表结构的同时,按姓名字母顺序对列表进行排序,例如[[“Bill”,“4”],[“Dwayne”,“5”],[“James”,“3”],[“Sally”,“3”] 我

如何按字母顺序对字符串数组对象列表进行排序

我的名单如下:

List CurrentRankingsList = rankings.getRankings();
我有一个字符串对象列表,如下所示:

[["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());
            }
        }) ;
(从原始问题更新代码)
Collections.sort(CurrentRankingsList,new Comparator()
{
@凌驾
公共整数比较(等级o1,等级o2){
//TODO自动生成的方法存根
字符串testo1=o1.getObject().toString();
字符串testo2=o2.getObject().toString();
int x=o1.getObject().toString().compareTo(o2.getObject().toString());
返回o1.getObject().toString().compareTo(o2.getObject().toString());
}
}) ;
在调试比较时,我们得到了Paul(o1.GetObject.ToString)和Nathan(o2.GetObject.ToString)的比较

如何按字母顺序对字符串数组对象列表进行排序

  • 声明列表或具有以下类型的任何集合:
    ArrayList
    list
    ,否则该集合将被视为原始类型,我们将面临类型不安全操作的运行时错误开销
  • 您需要将
    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]);
         }
     }) ;
    

为什么使用原始类型?另外:你会从这里得到这个想法,如果你只是调整格式,它看起来非常类似于JSON。看这里,我认为CurrentRankingsList要么是一个列表列表,要么是一个字符串列表[]。我想你可能是对的,但是OP提到的
如何按名称对列表进行排序是相当令人困惑的:)这不会太多地改变你的代码^^
public int compare(String[]o1,String[]o2){返回o1[0]。compareTo(o2[0]);}
嘿,谢谢你的回答。第一个错误是因为我们正在将对象与字符串进行比较。所以我们尝试了第二个,并在比较中调试,看到保罗对内森的结果是2。列表没有正确排序,我想它的排序是随机的。@Fearghal,请你重新措辞好吗。你是说使用
比较器
的拟议方法不起作用吗?
 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());
     }
 }) ;