【问题标题】:Sort arraylist of letters and numbers [duplicate]对字母和数字的arraylist进行排序[重复]
【发布时间】:2013-05-04 07:37:34
【问题描述】:

我正在尝试对由数字和字母组成的字符串数组列表进行排序,排序后的列表示例如下:

name 1
name 2
name 3
name 11
name 12
name 13

但是当我使用 collections.sort() 时,它是这样排序的:

name 1
name 11
name 12
name 13
name 2
name 3

任何想法我正在寻找的排序类型将被称为或如何实现?

【问题讨论】:

    标签: java


    【解决方案1】:

    Strings 默认按字母顺序排列。您需要实现自己的Comparator<String> 或使用实现Comparable 的对象(或使用Comparator)来解决这个问题,特别是因为您使用的Strings 是单词和整数的混合。

    【讨论】:

      【解决方案2】:

      实现 comprable,覆盖 compareTo,解析 int 和 name,然后你可以对它们进行排序。你想按数字排序还是按两者排序

      【讨论】:

        【解决方案3】:

        可以使用HashMap<Integer,String> map,可以排序

        【讨论】:

          【解决方案4】:

          发生这种情况是因为它按字母顺序排序,一次查找一个字符。

          name 13
          name 2
          

          这里,“name”是同一个部分,继续前进,你有“1”和“2”。 12 之前。请记住 132 在这里只是字符串而不是数字。

          您可以write your own comparator。实现您正在尝试的目标。

          【讨论】:

            【解决方案5】:

            按照其他人的建议,您可以编写自己的Comparator,如下所示

                  Comparator<? super String> myComparator = new Comparator<String>() {
            
                    public int compare(String name1, String name2) {
                        int num1 = Integer.parseInt(name1.split(" ")[1]);
                        int num2 = Integer.parseInt(name2.split(" ")[1]);
                        // > : Increasing order 
                        // < : Decreasing order
                        if(num1 < num2)
                                return 1;
                        else
                                return -1;
                    }
            
                  };
                  Collections.sort(names, myComparator);
            

            输出:

            名称 91
            名称 12
            名称 11
            名字2

            【讨论】:

              猜你喜欢
              • 2020-12-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-05-22
              • 1970-01-01
              • 2019-08-02
              • 2019-02-03
              相关资源
              最近更新 更多