JavaRush /Java блог /Архив info.javarush /Сорировка строчного массива.
Artemka58_1
21 уровень

Сорировка строчного массива.

Статья из группы Архив info.javarush
Как отсортировать массив без учёта регистра букв? Если быть точнее сортировка работает, но некорректно. Если первая буква первого элемента имеет верхний регистр, даже если она находится в конце алфавита, то элемент не меняет своего положения. С другими элементами массива проблем нет. Вот мой код: import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.StringTokenizer; public class G5_4 { public static void main(String[] args) throws IOException { BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); ArrayList list = new ArrayList(); System.out.println("Введите строку: "); String s = read.readLine(); StringTokenizer z = new StringTokenizer(s); while (z.hasMoreTokens()) { list.add(z.nextToken()); } System.out.println("\nOriginal array is: "); for (String a : list) { System.out.print(a + " "); } System.out.println("\n\nSorted array is: "); Collections.sort(list); for (String a : list) { System.out.print(a + " "); } } }
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
iZulrad Уровень 34
18 февраля 2015
package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class test {
    public static void main(String[] args) {
        //Java 8
        List<String> ss = new ArrayList<>(Arrays.asList("a", "b", "c", "A", "B", "C"));
        System.out.println(ss.stream().sorted(String::compareToIgnoreCase).collect(Collectors.joining(", ", "[", "]")));

        //Java 5
        List<String> ss2 = new ArrayList<>(Arrays.asList("a", "b", "c", "A", "B", "C"));
        Comparator<String> comparator = new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareToIgnoreCase(o2);
            }
        };
        ss2.sort(comparator);
        System.out.println(ss2);
    }
}

out
[a, A, b, B, c, C]
[a, A, b, B, c, C]
Sant9Iga Уровень 41
18 февраля 2015
добавь в метод sort Comparator с переопределенным методом compare который будет сранивать строки игнорируя регистр