Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 22.02.2017
Сообщений: 103
1

Отсортировать массив используя Comparator

09.09.2018, 21:45. Показов 4212. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Само задание звучит так: Реализовать программу чтения из текстового файла целых положительных значений (числа разделены пробелами, следует читать до конца файла), занесение этих чисел в массив, сортировка по убыванию и по возрастанию суммы цифр и хранения обоих результатов в двух новых текстовых файлах. Перечисленные действия реализовать в отдельной статической функции. Для определения порядка сортировки создать классы, которые реализуют интерфейс Comparator.

Я реализовала чтение из файла, занесение в массив, сортировку по возрастанию, но вот я не могу понять, как для определения порядка сортировки создать классы, которые реализуют интерфейс Comparator. Насколько я понимаю,сортировку по убыванию надо тоже как-то через Comparator.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.company;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
 
public class Main {
 
public static void funk()throws FileNotFoundException{
    String path = 
"C:\\Users\\Ira\\Desktop\\PROGRAMMS\\JAVA\\1\\2\\out\\zfr.txt";
    File file = new File(path);
    Scanner scanner = new Scanner(file);
    String line = scanner.nextLine();
    String[] numbersString = line.split(" ");
    int[] numbers = new int[numbersString.length];
    int[] numberss = new int[numbersString.length];
    int counter = 0;
    for (String number : numbersString) {
        numbers[counter++] = Integer.parseInt(number);
    }
    System.out.println(Arrays.toString(numbers));
    scanner.close();
    System.out.print("[");
    for (int j=0;j<numbers.length;j++){
        int sum=0;
        while(numbers[j] != 0){
            sum += (numbers[j] % 10);
            numbers[j]/=10;
        }
        numberss[j]=sum;
        System.out.print(numberss[j] + " ");
    }
    System.out.println("]");
    java.util.Arrays.sort (numberss);
 
    System.out.print("[");
    for (int j=0;j<numbers.length;j++) {
        System.out.print(numberss[j] + " ");
    }
    System.out.println("]");
}
 
public static void main(String[] args) throws FileNotFoundException {
    funk();
}
}
Добавлено через 31 минуту
Насколько я поняла, то надо создать класс, типа такого.
Java
1
2
3
4
5
6
7
public class Test implements Comparator <Integer> {
 
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2-o1;
    }
}
Но я не очень пойму, что описывать в главном классе
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2018, 21:45
Ответы с готовыми решениями:

Сортировка в порядке убывания и возрастания, используя Comparator
Здравствуйте! Подскажите, пожалуйста, можно ли решить данную проблему. Мне нужно вывести список...

Как отсортировать массив элементов некоторого класса в java по одному полю используя sort?
Здравствуйте, уважаемые участники форума! Возник такой вопрос: Как отсортировать массив элементов...

Comparator
Объясните пожалуйста как работают эти методы, и если мне надо сортировать еще и по другим полям...

Comparator
Есть класс User и 3 компаратора. public class User { private String name; ...

4
Эксперт PythonЭксперт Java
19511 / 11051 / 2931
Регистрация: 21.10.2017
Сообщений: 23,301
09.09.2018, 22:33 2
Лучший ответ Сообщение было отмечено Iridze как решение

Решение

Цитата Сообщение от Iridze Посмотреть сообщение
Насколько я поняла
Все правильно. В данном случае в мейне, ну или где там
Java
1
Arrays.sort(numberss, new Test());
Вуаля

Добавлено через 2 минуты
Т.е. метод sort() вторым аргументом принимает компаратор
1
1 / 1 / 0
Регистрация: 22.02.2017
Сообщений: 103
09.09.2018, 22:33  [ТС] 3
А обязательно ли в мейне, можно в моей функции, в которой лежит нужный мне массив?
Просто я и сама додумалась до Arrays.sort(numberss, new Test());
Но если вставлять в funk, то ругается. Ну и если в мейн, то тоже проблема.
0
Эксперт PythonЭксперт Java
19511 / 11051 / 2931
Регистрация: 21.10.2017
Сообщений: 23,301
09.09.2018, 22:38 4
Цитата Сообщение от Iridze Посмотреть сообщение
можно в моей функции
Канешн.
Цитата Сообщение от Iridze Посмотреть сообщение
ругается
Потому, что твой компаратор сравнивает объекты типа Integer, а массив у тебя - int
0
1 / 1 / 0
Регистрация: 22.02.2017
Сообщений: 103
09.09.2018, 22:45  [ТС] 5
Дошло, спасибо большое. Из-за этих мини ошибок никак не могла запустить прогу без ошибок.
0
09.09.2018, 22:45
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2018, 22:45
Помогаю со студенческими работами здесь

Сортировка, Comparator
Доброго времени суток. Нужно дописать метод, который будет выполнять сортировку по скорости в...

Comparable vs Comparator
Несколько дней бьюсь над этой темой, но все равно остается недопонимание. Вот, например, в этой...

TreeMap Comparator
Здравствуйте, помогите пожалуйста написать Сomparator для TreeMap, нужно отсортировать по значению...

Comparator для новенького
Здраствуйте.Обьясните пожалуйста как эту сортировку оформить через Comparator:(: String s1 =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как обучить нейросеть создания картинок на Python
bytestream 24.01.2025
В эпоху цифровых технологий искусственный интеллект становится неотъемлемой частью творческого процесса. Особое место в этой области занимает разработка и обучение нейронных сетей для создания. . .
Как обучить нейросеть генерации текста на Python
bytestream 24.01.2025
В современном мире искусственный интеллект и машинное обучение становятся неотъемлемой частью многих технологических решений. Одной из наиболее интересных и востребованных задач в этой области. . .
Машинное обучение на Python
bytestream 24.01.2025
Введение в машинное обучение на Python Машинное обучение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, которая позволяет компьютерным системам. . .
Как удалить вирус-майнер с компьютера
hw_wired 24.01.2025
Вирусы-майнеры стали одной из наиболее серьезных угроз для пользователей компьютеров. Эти вредоносные программы тайно используют вычислительные ресурсы зараженного устройства для добычи криптовалюты. . .
Что такое веб-сервер, для чего он нужен и как работает
bytestream 24.01.2025
В современную эпоху цифровых технологий веб-сервер является фундаментальным компонентом интернет-инфраструктуры, обеспечивающим функционирование множества онлайн-сервисов и веб-сайтов. Этот. . .
Как в цикле for перебрать все элементы в словаре в Python
bytestream 24.01.2025
Словари в Python представляют собой мощные структуры данных, которые позволяют хранить информацию в формате ключ-значение. Эта особенность делает их незаменимыми при работе с данными, где требуется. . .
Как отменить rebase в Git
hw_wired 24.01.2025
Git rebase представляет собой мощный инструмент для управления историей коммитов в системе контроля версий Git. Этот механизм позволяет разработчикам изменять последовательность, комбинировать или. . .
Как поменять цвет input placeholder с помощью CSS
bytestream 24.01.2025
В веб-разработке оформление элементов пользовательского интерфейса играет ключевую роль в создании привлекательного и интуитивно понятного дизайна. Особое внимание уделяется формам ввода данных, где. . .
Как перебрать все значения в перечислении (enum) в C#
bytestream 24.01.2025
Перечисление (enum) в языке программирования C# представляет собой специальный тип данных, который позволяет определить набор именованных констант. Этот мощный инструмент особенно полезен, когда. . .
Как обойтись без проверки на null, чтобы избежать NullPointerExce­ption в Java
bytestream 24.01.2025
NullPointerException (NPE) является одним из самых распространенных исключений в Java, создающих серьезные проблемы при разработке программного обеспечения. Данное исключение возникает при попытке. . .
Что лучше использовать в href ссылок в JavaScript: "#" или "javascript:voi­­d(0)­"
bytestream 24.01.2025
При разработке веб-приложений важную роль играет правильное использование HTML-ссылок в сочетании с JavaScript. Одним из ключевых аспектов является выбор корректного значения атрибута href для. . .
Как узнать индекс элемента списка по его значению в Python
hw_wired 24.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только манипулировать элементами списка, но и определять их точное местоположение. Индекс элемента представляет собой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru