Есть массив вида
String[] arr = {
"a (51)",
"b (13)",
"c (55)"
};
в котором нужно провести сортировку элементов по значениям в скобках. Думала разбить на два списка (name и value), сортировать value, сопоставляя списки и зашла в тупик, больше идей нет. Может кто-нибудь сталкивался с подобной задачей?
Такой способ Вам подходит?
import java.util.Arrays;
import java.util.Comparator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ArraySort {
private static Pattern pattern = Pattern.compile("(?<number>\\d+)");
public static void main(String[] args) {
String[] arr = {
"a (51)",
"b (13)",
"c (55)"
};
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return getValue(o1).compareTo(getValue(o2));
}
});
System.out.println(Arrays.toString(arr));
}
private static String getValue(String value) {
Matcher matcher = pattern.matcher(value);
if (matcher.find()) {
return matcher.group("number");
} else {
return "";
}
}
}
[b (13), a (51), c (55)]
Разбить на два массива - плохое решение. Лучше иметь один массив объектов, которые инкапсулируют в себе два поля - value и name
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Для примера я создал сервис с таймеромТуда передаю какие-то параметры для сверки
Студия предлагает использовать private final ThreadLocal context = new ThreadLocal(); вместо private Context context; Это может предотвратить утечку памяти?
Пытаюсь создать бота для телеграммКласс Bot:
Есть 2 отдельных пакета и в каждом по 1му классу (условно 1c и 2c)