首页 > 解决方案 > 如何对具有字符串和整数组合数据(如 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 天

标签: java

解决方案


您可以使用Comparator.comparingIntwhich required 函数int从对象中提取 an ,在本例中为 a String

list.sort(Comparator.comparingInt(s -> Integer.valueOf(s.split(" ")[0])));

Integer.valueOf(s.split(" ")[0])将只保留字符串中的数字:

“198 天”-> 198


推荐阅读