繁体   English   中英

如何对作为字符串的整数进行排序?

[英]How to sort Integer that are Strings?

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

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

“地板”:1

我在微调器中有这个选项ascdesc,所以我会向你展示 swith 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 视图中吗?

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

这是您的代码应该如何:

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

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

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()));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM