簡體   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