Как отсортировать ArrayList по убыванию вставленных целочисленных чисел типа String

Столкнулся с задачей отсортировать биржи по объему, от большего к меньшему, но, все перевести я должен в ArrayList, если с названием и URL проблем нет, то вот как отсортировать по убыванию думаю весь день.

Методом .sort() не получается, к сожалению.

Объект в ArrayList выглядит так:

4710,BitMart-https://www.bitmart.com/trade/en?layout=basic&symbol=XCAD_USDT| $XCAD / $USDT |

4710 - объем

Как по нему отсортировать?


Ответы (2 шт):

Автор решения: Nowhere Man

Если "числовое число" находится в начале строки и после него следует запятая, можно вырезать подстроку до первой запятой при помощи String::substring + String::indexOf, преобразовать её в целое при помощи Integer::parseInt, и отсортировать при помощи Comparator.comparingInt + Comparator::reversed

list.sort(
    Comparator.<String>comparingInt(s -> Integer.parseInt(
        s.substring(0, s.indexOf(","))
    ))
    .reversed()
);
→ Ссылка
Автор решения: Дмитрий Алексеенко

Если я правильно понял как у тебя хранятся данные в ArrayList<String> То думаю можно сделать так:

        List<String> list = new ArrayList<>();
        list.add("2");
        list.add("1");
        list.add("6");
        list.add("5");
        
        System.out.println(list.toString());
        Вывод [2, 1, 6, 5]
        list.sort(new Comparator<String>()
        {
            @Override
            public int compare(String o1, String o2)
            {
                return o1.compareTo(o2);
            }
        });
        
        System.out.println(list.toString());
        Вывод [1, 2, 5, 6]

UPD

list.add("2,  F");
list.add("1, C");
list.add("6, A");
list.add("5, D");
Вывод [2,  F, 1, C, 6, A, 5, D]

        list.sort(new Comparator<String>()
        {
            @Override
            public int compare(String o1, String o2)
            {
                o1 = o1.substring(0, o1.indexOf(","));
                o2 = o2.substring(0, o2.indexOf(","));
                return o1.compareTo(o2);
            }
        });
Вывод [1, C, 2,  F, 5, D, 6, A]
→ Ссылка