Всем привет. Изучаю Java, решая задачи на Codewars.
Сначала решаю интересующую меня задачу на JavaScript, затем на Java, тем самым изучая методы в Java.
Например:
function findChildren(dancingBrigade) {
return dancingBrigade
.toLowerCase()
.split('')
.sort()
.map((currentValue, index, array) => {
const previousValue = array[index - 1];
if (index === 0 || currentValue !== previousValue) {
return currentValue.toUpperCase();
}
return currentValue;
})
.join('');
}
const s = 'beeeEBb'; // BbbEeee
const s2 = 'uwwWUueEe'; // EeeUuuWww
console.log(findChildren(s)); // beeeEBb
// console.log(findChildren(s2)); // EeeUuuWww
Java
package main.java.kyu6;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class WhereIsMyParent {
static int index = 0;
static String findChildren(final String text) {
ArrayList<Character> arrayList = new ArrayList<>();
for (int i = 0; i < text.length(); i++) {
Character currentValue = Character.toLowerCase(text.charAt(i));
// System.out.println(text.charAt(i));
arrayList.add(currentValue);
}
System.out.println(arrayList);
System.out.println(Collections.sort(arrayList));
List<Character> result = arrayList.stream().map((currentValue) -> {
Character previousValue = arrayList.get(index - 1);
index++;
return currentValue;
}).collect(Collectors.toList());
// System.out.println("result " + result);
return "";
}
public static void main(String[] args) {
String s = "beeeEBb"; // "EeeeBbb"
String s2 = "uwwWUueEe"; // "WwwUuuEee"
System.out.println(findChildren(s)); // "EeeeBbb"
// System.out.println(findChildren(s2)); // "WwwUuuEee"
}
}
Ещё раз уточню, что вопрос не в том как решить задачу, а в конкретных ниже описанных моментах.
Изначально я создал коллекцию ArrayList в цикле заполнил её. В данном случае я разбираю именно работу с ArrayList.
Далее, используя вспомогательный класс Collections я хочу отсортировать в алфавитном порядке коллекцию:
System.out.println(Collections.sort(arrayList));
Первый вопрос, почему не выходит отсортировать?
Также уточню, что здесь именно желание попрактиковаться с функциональным программированием в Java.
Далее, используя Stream API, используя метод map, я хочу пройти пройти по коллекции. Второй вопрос, верно ли я понял, что в параметрах только currentValue? Соответственно, чтобы получить индекс мне необходимо выше отдельно объявлять переменную?
Далее в условии я хочу проверить:
If (currentValue !== previousValue) {}
Соответственно мне необходимо получить previousValue:
Character previousValue = arrayList.get(index - 1);
Третий вопрос, насколько я понимаю, если элемента по указанному индексу не существует, вернётся не null, а ошибка. Как правильно получить previousValue?
Прошу строго не судить, а, по возможности, подсказать насчёт вышеуказанных вопросов.