繁体   English   中英

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

[英]Sort a List of String array objects

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

我将清单设置如下:

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)与Nathan(o2.GetObject.ToString)

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

  • 声明list或任何类型为ArrayList<String[]>List<String[]>的集合,否则该集合将被视为原始类型,并且我们将面临类型不安全操作的运行时错误开销。
  • 您将需要将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()); } }) ; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM