Java中数组对象的排序
我试图根据数组中的值对数组进行排序,我的代码正在编译,但没有排序Java中数组对象的排序,java,android,arrays,Java,Android,Arrays,我试图根据数组中的值对数组进行排序,我的代码正在编译,但没有排序 public void onResponse(TopScoreObject[] response) { try { if(response != null){ List<TopScoreObject> mList = arrayToListObject(response); Colle
public void onResponse(TopScoreObject[] response) {
try {
if(response != null){
List<TopScoreObject> mList = arrayToListObject(response);
Collections.sort(mList, new Comparator<TopScoreObject>() {
@Override
public int compare(TopScoreObject topScoreObject, TopScoreObject t1) {
return topScoreObject.getUsername().compareTo(t1.getUsername());
}
});
Collections.reverse(mList);
mAdapter = new LadderBoardAdapter(mList);
mRecyclerView.setAdapter(mAdapter);
} else{
DisplayMessage.displayErrorMessage(getActivity(), "No score found yet");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void onResponse(TopScoreObject[]响应){
试一试{
if(响应!=null){
List mList=arrayToListObject(响应);
Collections.sort(mList,newcomparator(){
@凌驾
公共整数比较(TopScoreObject TopScoreObject,TopScoreObject t1){
返回topCoreObject.getUsername().compareTo(t1.getUsername());
}
});
收款。反向(mList);
mAdapter=新梯板适配器(mList);
mRecyclerView.setAdapter(mAdapter);
}否则{
DisplayMessage.displayErrorMessage(getActivity(),“尚未找到分数”);
}
}捕获(例外e){
e、 printStackTrace();
}
}
我在这里做错了什么?在代码中,您按自定义逻辑排序,然后使用默认的收集反转,这会损坏您的排序 收款。反向(mList)` 您可以将否定添加到排序逻辑并删除集合
List mList=arrayToListObject(响应);
Collections.sort(mList,newcomparator(){
@凌驾
公共整数比较(TopScoreObject TopScoreObject,TopScoreObject t1){
return!topCoreObject.getUsername().compareTo(t1.getUsername());
}
});
您可以尝试在Java 8中使用lambda按字母顺序对用户名进行排序,这样可以在用户名为null时处理null值
public void onResponse(TopScoreObject[] response) {
try {
if(response != null){
List<TopScoreObject> mList = new ArrayList<>(Arrays.asList(response));
mList.sort(TopScoreObject::getUsername, Comparator.nullsLast(Comparator.reverseOrder()));
public void onResponse(TopScoreObject[]响应){
试一试{
if(响应!=null){
List mList=newarraylist(Arrays.asList(response));
sort(topCoreObject::getUsername,Comparator.nullsLast(Comparator.reverseOrder());
Arrays.sort(response)
Collections.reverse(mList)
,因为您已经在对其进行排序TopCoreObject
实现Compariable
,并将排序规则移动到类TopCoreObject
中,则会更容易、更清晰。这样,代码会更内聚,耦合性也会更低response=sorted.toArray();
你所说的“它不是排序”是什么意思?你想要的输出和给定的输入是什么?提供示例输入和输出。还要研究如何使用调试器一步一步地跟踪它。你打算按用户名或分数排序吗?你的示例尝试按用户名排序。作为一个简单的初学者,你可以尝试数组。排序(响应)我很抱歉。它起作用了。我只是忘了注意到我也在反转数组。使用
reverse
不会“破坏”排序,它只是反转排序。结果仍然是排序的,只是向后。
public void onResponse(TopScoreObject[] response) {
try {
if(response != null){
List<TopScoreObject> mList = new ArrayList<>(Arrays.asList(response));
mList.sort(TopScoreObject::getUsername, Comparator.nullsLast(Comparator.reverseOrder()));