Нужно отсортировать массив по числу (по возрастанию)
Дан каркас класса
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);
}
}