В Java вы можете создать свой собственный RuleBasedCollator с символом _
в конце и использовать его в качестве компаратора, например, вот так:
String rules = "< a, A < b, B < c, C < d, D < e, E < f, F < g, G < h, H < i, I" +
"< j, J < k, K < l, L < m, M < n, N < o, O < p, P < q, Q < r, R" +
"< s, S < t, T < u, U < v, V < w, W < x, X < y, Y < z, Z < '_'";
RuleBasedCollator ruleBasedCollator = new RuleBasedCollator(rules);
List<String> stringList = new ArrayList<>();
stringList.add("VasyaPetrov");
stringList.add("Vasya_Petrov");
stringList.add("Vasyapetrov");
List<String> sortedCollection = stringList
.stream()
.sorted(ruleBasedCollator::compare)
.collect((Collectors.toList()));
System.out.println(sortedCollection);
Затем результат будет:
[Vasyapetrov, VasyaPetrov, Vasya_Petrov]