java - 如何按数字顺序对字符串和数字列表进行排序?
问题描述
如何以这样的非正式方式修复 id 的排序:
1
10
11
..
2
20
21
..
我想打印如下:
1
2
3
..
10
11
..
此外,我的 MainData.getName 包含最多 1000 个 ListArrays 列表的字符串和数字,请参阅我的应用程序图片链接:
- 这是我的应用图片:[1]:https ://i.stack.imgur.com/woPm0.jpg
我试过这个,但它给出了相同的结果
int[] range = IntStream.rangeClosed(1, 1000).toArray();
List<String> rangeList = new ArrayList<>();
for (int number : range) {
rangeList.add(String.valueOf(number));
}
这是我的 MainActivity
Api api = retrofit.create(Api.class);
Call<List<MainData>> call = api.getData();
call.enqueue(new Callback<List<MainData>>() {
@Override
public void onResponse (Call<List<MainData>> call, Response<List<MainData>> response) {
if (!response.isSuccessful()) {
Toast.makeText(MainActivity.this, response.code(), Toast.LENGTH_SHORT).show();
return;
}
List<MainData> postList = response.body();
// Filter out any items where "name" is blank or null.
List<MainData> tempList = new ArrayList<>();
for(MainData data :postList)
{
if(null!= data.getName() && !data.getName().isEmpty()) {
//sort by name
Collections.sort(tempList, (mainData, t1) -> mainData.getName().compareTo(t1.getName()));
int[] range = IntStream.rangeClosed(1, 1000).toArray();
List<String> rangeList = new ArrayList<>();
for (int number : range) {
rangeList.add(String.valueOf(number));
}
//sort by ListId
Collections.sort(tempList, (mainData, t1) -> mainData.getListId().compareTo(t1.getListId()) );
tempList.add(data);
}
}
RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(tempList, MainActivity.this);
recyclerView.setAdapter(recyclerViewAdapter);
}
@Override
public void onFailure (Call<List<MainData>> call, Throwable t) {
Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
这是我的 Json 数据
public class MainData {
public String listId, name, id;
public String getListId () {
return listId;
}
public String getName () {
return name;
}
public String getId () {
return id;
}
}
解决方案
由于您的 listId 是 String ,因此列表按字典顺序排序。相反,您可以先将字符串转换为整数,然后对其进行排序。下面是插图。
Collections.sort(tempList, (mainData, t1) -> Integer.parseInt(mainData.getListId())-Integer.parseInt(t1.getListId());
推荐阅读
- c# - 在 ComboBox 上显示列名
- opencv - 如何在图像上进行字符分割(见描述)?
- java - 如何使用 Spring Boot Web Authentication 和 Postman 测试 API?
- r - 对齐时间序列ggplot
- haskell - 为什么我的 Haskell 函数返回的是类型而不是值?
- tensorflow - 使用样本输入预测语音识别模型
- node.js - 如果未找到匹配项,mongoDB 查找命令将返回所有集合
- linux - 如何重命名文件以删除直到字符第二次或第三次出现的所有内容?
- scala - 如何编写可以在scala中一次在所有列上实现的自定义函数
- ios - CGLayer CGGradient 径向渐变效果不佳