Мне нужен хороший однострочный способ генерации случайной перестановки строки Java.
Вот пример, использующий потоки Java 8, нужного мне направления.
В этом примере я использую "abcd" в качестве входных данных примера, который может производить перестановки, такие как dabc, dbac и т. Д.
Я сократил генерацию перестановки строк до трех строк, но у меня есть ощущение, что она может быть короче.
public static void main(String[] args) {
List<Character> charList = "abcd".chars().mapToObj(i -> (char) i).collect(Collectors.toList());
Collections.shuffle(charList);
String string = charList.stream().map(String::valueOf).collect(Collectors.joining());
System.out.println(string);
}
Был бы признателен любой способ сделать этот код короче / проще.
EDIT:
Хорошо, я придумала, как мне кажется, эффективное однострочное решение, но оно не очень читабельное, поэтому я, вероятно, разбью его на несколько строк.
Я включил это здесь только для справки. Если кто-то может упростить это, это также будет долгожданным ответом.
String str = "ABCDE";
String str2 = str.chars().mapToObj(e->(char)e).collect(Collectors.toMap(key -> new Random().nextInt(), value -> value)).values().stream().map(String::valueOf).collect(Collectors.joining());
System.out.println(str2);