Как преобразовать элементы ArrayList в строки

168
21 февраля 2022, 01:50

Задача стоит в том, чтобы удалить все дубли из коллекции, затем отсортировав, преобразовать числа в строки. Никак не могу сообразить, что не так!

Моя реализация:

public static List<String> task1(List<Integer> source) {
        source = new ArrayList<>(new HashSet<>(source));
        Collections.sort(source);
        String[] numbers = (String[]) source.toArray();
        ArrayList g = new ArrayList(new ArrayList(Arrays.asList(numbers)));
        return g;
    }

Ошибка:

java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String; ([Ljava.lang.Object; and [Ljava.lang.String; are in module java.base of loader 'bootstrap')

Answer 1

Проблема в том, что нельзя так кастовать лист.

Для версии java 8+:

public static List<String> task1(List<Integer> source) {
    return source.stream().distinct().sorted().map(String::valueOf)
            .collect(Collectors.toList());
}

Для версий пониже:

public static List<String> task1(List<Integer> source) {
    List<Integer> temp = new ArrayList<>(new HashSet<>(source));
    Collections.sort(temp);
    List<String> result = new ArrayList<>();
    for (Integer i : temp) {
        result.add(i.toString());
    }
    return result;
}
Answer 2

Сообразил все же)

public static List<String> task1(List<Integer> source) {
        source = new ArrayList<>(new HashSet<>(source));
        Collections.sort(source);
        List<String> numbers = new ArrayList<>();
        for (Object o : source) {
            numbers.add(o.toString());
        }
        return numbers;
    }
Answer 3

Можно так

public static List<String> task1(List<Integer> source) {
    TreeSet<Integer> setNums = new TreeSet<>( source );
    List<String> listNums = new ArrayList<>();
    for ( Integer num : setNums ) {
        listNums.add( num.toString() );
    }
    return listNums;
}
READ ALSO
Uri to FilePath и наоборот

Uri to FilePath и наоборот

СИТУАЦИЙ №1

210
Обновление entity. TransientObjectException

Обновление entity. TransientObjectException

Здравствуйте имеются 3 entity (Doctor, Patient, Recipe) которые с помощью Hibernate замапленны в БДRecipe имеет в качестве поля Doctor и Patient

98
Проблема записи файла на некоторых устройствах через openOutputStream(mUri)

Проблема записи файла на некоторых устройствах через openOutputStream(mUri)

Я пишу написал приложение, которое открывает текстовый файл через Uri: (getContentResolver()openInputStream(mUri))

85