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]); } }) ;
如何按名称对列表进行排序是相当令人困惑的:)这不会太多地改变你的代码^^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());
}
}) ;