Мне нужно отсортировать набор строк, который содержит число. Ex: [15, 13, 14, 11, 12, 3, 2, 1, 10, 7, 6, 5, 4, 9, 8]
. Мне нужно отсортировать его до [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
. Но когда я использую Collections.sort(keyList);
, где keyList установлен, полученный мною результат равен [1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9]
. Пожалуйста помоги.Сортировка набора номеров строк в java
ответ
вы можете попробовать:
final int[] searchList =
new int[] { 15, 13, 14, 11, 12, 3, 2, 1, 10, 7, 6, 5, 4, 9, 8 };
Arrays.sort(searchList);
Результат:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Список должен быть int
Написать собственный компаратор и разобрать его в качестве аргумента Collections.sort(Collection,Comparator)
. Одно из решений - разбор ваших строк на целые.
Collections.sort(keyList, new Comparator<String>()
{
@Override
public int compare(String s1, String s2)
{
Integer val1 = Integer.parseInt(s1);
Integer val2 = Integer.parseInt(s2);
return val1.compareTo(val2);
}
});
Преобразуйте String
сек в Integer
с первым.
List<Integer> ints = new ArrayList<>();
for (String s : strings)
ints.add(Integer.parseInt(s));
Collections.sort(ints);
Если вам не нужны дублирующиеся значения, вы можете использовать SortedSet
, которая поддерживает порядок автоматически:
SortedSet<Integer> ints = new TreeSet<>();
for (String s : strings)
ints.add(Integer.parseInt(s));
// all done!
Ваши строки будут отсортированы как строки в естественном порядке, а не как числа. Итак, "11"
приходит после "10"
и "2"
придет после "11111111110"
.
Что делать ?.
Используйте Integer.parseInt()
, чтобы проанализировать каждое значение строки в наборе как целое число, затем добавить их в набор и вызвать Collections.sort()
.
вы могли бы сделать, как сказал Кай, и преобразовать строку в целое и сравнить его
но это дорогостоящая операция, то, что я предлагаю это:
keyList.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.length() == o2.length()){
return o1.compareTo(o2);
}
return o1.length() - o2.length();
}
});
если ваши номера имеют одинаковую длину, тогда сопоставьте их, используя String.compareTo
, в противном случае отсортируйте их по заказу, чтобы 1 2 3 будет автоматически до 11 22 и т.д.
- 1. Сортировка номеров и строк Al
- 2. Сортировка номеров строк с буквы
- 3. Сортировка строк для повторяющихся идентификационных номеров
- 4. Bubble Сортировка номеров из файла в java
- 5. Java: Сортировка массива числовых строк
- 6. Сортировка номеров в NSArray?
- 7. возвращение набора строк в java
- 8. Сортировка номеров, имеющих 4 Divisors (java)
- 9. сортировка строк на java
- 10. Пользовательская сортировка строк в java
- 11. Сортировка NSStrings номеров
- 12. Сортировка повторяющихся номеров
- 13. Ручная сортировка 4 номеров
- 14. Сортировка номеров версий приложений
- 15. Сортировка номеров версий
- 16. Сортировка элементов в списке номеров
- 17. Сортировка номеров номеров по первому символу в Excel
- 18. Отображение номеров строк в JTable
- 19. Сортировка строк буквенно-цифровых Java
- 20. Быстрый Сортировка не сортировка номеров высокого класса
- 21. Присвоить список номеров набора диапазона
- 22. Сортировка строк, вставленных в массив в Java
- 23. Как подождать завершения набора строк в java?
- 24. Сортировка количества введенных пользователем номеров в соответствии с размером (Java)
- 25. сортировка 50 000 000 номеров
- 26. сортировка строк с использованием bubblesort в java
- 27. Сортировка строк по алфавиту в массиве. Java
- 28. Традиционная испанская сортировка строк в Java
- 29. Сортировка строк огромного файла file.txt в java
- 30. сортировка строк в Java на основе подстрок
Сравнение строк является алфавитным. Попробуйте преобразовать его в список Integer, чтобы получить желаемый результат. – blackSmith
Пожалуйста, разместите фактический код, который вы использовали. – wei2912
Collections.sort принимает компаратор в качестве аргумента. Это позволяет вам самостоятельно определить функцию сравнения. (Фактически, измените на int, а затем сравните значения) – Ronald