【问题标题】:Sorting text rows by integer value [closed]按整数值对文本行进行排序[关闭]
【发布时间】:2014-05-08 10:32:07
【问题描述】:

我需要一些帮助来排序文本行。

Kazimira Danutė PRUNSKIENĖ : 3,86%
Dalia GRYBAUSKAITĖ : 68,21%
Valdemar TOMAŠEVSKI : 4,68%
Algirdas BUTKEVIČIUS : 11,68%
Valentinas MAZURONIS : 6,08%
Česlovas JEZERSKAS : 0,66%
Loreta GRAUŽINIENĖ : 3,57%

我需要按数字对这个文本文档进行排序。

Dalia GRYBAUSKAITĖ : 68,21%
Algirdas BUTKEVIČIUS : 11,68%
Valentinas MAZURONIS : 6,08%
Valdemar TOMAŠEVSKI : 4,68%
Kazimira Danutė PRUNSKIENĖ : 3,86%
Loreta GRAUŽINIENĖ : 3,57%
Česlovas JEZERSKAS : 0,66%

最好的方法是什么?

           Reader reader = new InputStreamReader( new FileInputStream(desktopPath + "/RINKIMAI/INFO.txt"), "UTF-8");
           @SuppressWarnings("resource")
           BufferedReader br = new BufferedReader(reader);

          java.util.List<Float> allMatches = new ArrayList<Float>();
           String word = null;
           while((word =br.readLine()) != null){
               Pattern p = Pattern.compile("\\d+,\\d+");
               Matcher m = p.matcher(word); 
               while (m.find()) {
                   allMatches.add(Float.parseFloat(m.group()));   
               }
               Arrays.sort(allMatches);
           }

我无法将所有已解析的信息放入数组中,因为它是浮点类型,找不到解决方案。。在对所有信息进行降序排序后,是否有可能将所有信息以降序返回完整行?

【问题讨论】:

  • 您尝试过任何方法吗?
  • 我正在尝试。抱歉懒惰的帖子。

标签: java sorting text numbers


【解决方案1】:

编写一个Comparator 来比较两个String 值,方法是将它们拆分为":",并从第二部分解析float。然后使用Collections.sortArrays.sort,传入Comparator

【讨论】:

  • 谢谢,您提供了开始的线索。
  • 线索?我想我已经告诉过你该怎么做!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2013-02-26
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多