【问题标题】:How to sort Integer that are Strings?如何对作为字符串的整数进行排序?
【发布时间】:2023-03-22 17:06:01
【问题描述】:

我有一个项目,其中有一个名为“Floor”的变量作为字符串。我的任务是排序地板 ascdesc 方式以显示在 Recycler View 上。

我的 Json 响应包含以下元素:

“楼层”:1

我在微调器中有 ascdesc 选项,因此我将向您展示 swicth case 通讯员:

 case ASC:
       //Sort array list into Ascending order.
       Collections.sort(listModelsUa);
       listModelsUa.add(modelUA);
 case DESC:
       Collections.reverse(listModelsUa);
       listModelsUa.add(modelUA);

注意:我的 ModelUA 实现了 Comparable 并覆盖了以下方法

String floor;

    @Override
        public int compareTo(@NonNull Object o) {
            int compareTo=((ModelUA )o).getFloor();
            /* For Ascending order*/
            return this.floor-compareTo;
        }

我的问题是,还有其他方法可以使用字符串(可能转换为 Int)对 ArrayList 中的值进行排序并显示在 Recycler 视图中吗?

【问题讨论】:

  • 将字符串解析为整数。例如使用Integer.parseInt(text);。然后你可以像整数一样对它们进行排序。
  • 为什么你的ModelUA 实现Comparable 而不是Comparable<ModelUA>?或者,为什么你的compareTo 方法中有Object?使用泛型,而不是原始类型。

标签: java arrays string collections integer


【解决方案1】:

将字符串转换为整数很容易,如下所示。然后您可以对其进行排序或反转。

int[] myIntArray = new int[myarray.length];

for (int i = 0; i < myarray.length; i++) {
    myIntArray[i] = Integer.parseInt(myarray[i]);
}
Collections.sort(myIntArray);

如果您想使用核心 java 按字母顺序排序,请使用以下代码。

    for (int i = 0; i < n; i++) 
    {
        for (int j = i + 1; j < n; j++) 
        {
            if (names[i].compareTo(names[j])>0) 
            {
                temp = names[i];
                names[i] = names[j];
                names[j] = temp;
            }
        }
    }
    System.out.print("Names in Sorted Order:");
    for (int i = 0; i < n - 1; i++) 
    {
        System.out.print(names[i] + ",");
    }

 Collections.sort(Arrays.stream(myIntArray).stream()
.map(i -> Integer.parseInt(i))
.distinct()
.collect(Collectors.toList()));

【讨论】:

    【解决方案2】:

    您可以使用Stream.map() method解析Strings然后对列表进行排序。

    这应该是你的代码:

    Collections.sort(listModelsUa.stream()
        .map(i -> Integer.parseInt(i))
        .distinct()
        .collect(Collectors.toList()));
    

    【讨论】:

    • 请注意,您可以使用方法引用 Integer::parseInt 而不是 lambda i -&gt; Integer.parseInt(i)
    • @Zabuza 是的,谢谢你指出,我知道我这样发布它只是为了简化事情。
    猜你喜欢
    • 2010-10-21
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2019-02-05
    • 2014-06-21
    相关资源
    最近更新 更多