Нужно отсортировать массив по числу (по возрастанию)

Дан каркас класса

import java.util.Comparator;

public class LexSort implements Comparator<String> {

    @Override
    public int compare(String left, String right) {
        return left.compareTo(right);
    }
}

Дан тест

import static org.junit.Assert.assertThat;
import static org.hamcrest.Matchers.is;
import org.junit.Test;
import java.util.Arrays;

public class LexSortTest {
    @Test
    public void sortNum1and2and10() {
        String[] input = {
                "10. Task.",
                "1. Task.",
                "2. Task."
        };
        String[] out = {
                "1. Task.",
                "2. Task.",
                "10. Task."
        };
        Arrays.sort(input, new LexSort());
        assertThat(input, is(out));
    }
}

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

Автор решения: Aziz Umarov

Попробуйте такой Comparator

public class LexSort implements Comparator<String>() {
    public int compare(String left, String right) {
        return extractNumber(left) - extractNumber(right);
    }

    int extractNumber(String s) {
        String num = s.replaceAll("\\D", "");
        return num.isEmpty() ? 0 : Integer.parseInt(num);
    }
}
→ Ссылка