0. На дворе 21й год. Не нужно использовать старые версии java и объявлять тип для локальных переменных.
var arrayList = new ArrayList<Character>>();
1. Чтобы сделать из строки массив используйте функцию .split:
var array = someString.toLowerCase().split("")
2.
System.out.println(Collections.sort(arrayList));
.sort - это void. Он ничего не возвращает. Тут у вас будет ошибка компиляции.
3.
{
Character previousValue = arrayList.get(index - 1);
index++;
return currentValue;
}
так вообще никто не делает. Главная проблема - использование глобальных переменных внутри лямбды. Считайте, что previousValue вам никак не получить (не в StreamAPI). Придумайте другое решение.