Если вы используете TreeSet, у меня есть (длинная) однострочная для вас (если items
- TreeSet):
final String[] arr =
items.toString() // string representation
.replaceAll("\\D+", " ") // replace all non digits with spaces
.trim() // trim ends
.split(" "); // split by spaces
Тестовый код:
Set<Integer> items = new TreeSet<Integer>(Arrays.asList(5, 1, 2, 11, 3));
// insert above code here
System.out.println(Arrays.toString(arr));
Выход:
[1, 2, 3, 5, 11]
EDIT:
ОК, здесь другая версия, которая работает с массивом int напрямую. Но, к сожалению, это не однострочник. Тем не менее, он сохраняет дубликаты и, вероятно, быстрее
Снова отредактируйте:
Исправлены ошибки и поддерживаются отрицательные числа в соответствии с запросом:
РЕДАКТИРОВАТЬ еще раз : только один проход регулярного выражения и без трима
final int[] in = { 5, 1, 2, 11, 3, 2, -5 }; // with duplicate
Arrays.sort(in);
final String[] out =
Arrays.toString(in)
.replaceAll("(?:\\[?)([-\\d]+)(?:\\]?)", "$1") // just remove [ and ]
.split("\\s*,\\s*"); // split by comma
System.out.println(Arrays.toString(out));
Выход:
[-5, 1, 2, 2, 3, 5, 11]
Или полностью без регулярных выражений (кроме split ()), но с добавлением еще одного шага:
final int[] in = { 5, 1, 2, 11, 3, 2, -5 }; // with duplicate
Arrays.sort(in);
final String stringRep = Arrays.toString(in);
final String[] out =
stringRep.substring(1, stringRep.length() - 1).split("\\s*,\\s*");
System.out.println(Arrays.toString(out));
Выход:
[-5, 1, 2, 2, 3, 5, 11]
Обновление: удалите пробелы из моих последних двух решений, надеюсь, вы счастливы: -)