java - 如何对具有字符串和整数组合数据(如 1094 天、1092 天、994 天、973 天)的列表执行排序操作
问题描述
我有一个值为 994 天、973 天、1094 天、1092 天、189 天、184 天的列表,并且想要按升序执行排序。因此,当使用 Collections.sort() 时,其排序顺序不正确
List<String> list = new LinkedList<String>();
list.add("994 days");
list.add("973 days");
list.add("1094 days");
list.add("1092 days");
list.add("189 days");
list.add("184 days");
我想按升序排序,所以我的输出必须是:184 天、189 天、973 天、994 天、1092 天、1094 天
解决方案
您可以使用Comparator.comparingInt
which required 函数int
从对象中提取 an ,在本例中为 a String
:
list.sort(Comparator.comparingInt(s -> Integer.valueOf(s.split(" ")[0])));
Integer.valueOf(s.split(" ")[0])
将只保留字符串中的数字:
“198 天”-> 198
推荐阅读
- swift - 如何调整通过UIDatePicker设置的日期
- asp.net - 为什么 _session.Use 方法不能正常工作?
- opengl - 如何在 FreeType 中重置字符的 X 位置
- android-studio - 将 Unity 游戏导入为动态功能
- clojure - 如何在 Clojure EDN 中以不同的顺序执行自定义标签阅读器
- java - Java - 如何将 CSV 文件反序列化为 JavaBeans
- html - 剪辑路径无法正确缩放
- google-cloud-platform - 我正在尝试在谷歌云功能中添加验证 jwt 令牌方法,但它显示错误
- javascript - 如何从表格的最后一行获取输入类型文本的值
- java - 2 个按钮 2 个 EditTexts 字符串输入 1 个 TextVew 输出