Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 03.03.2014
Сообщений: 22

Отсортировать файл по заданным требованием

01.06.2017, 16:46. Показов 558. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, есть задача отсортировать файл по данным требованием:
  1. остортировать строки по отношению столбам
  2. сортировать по первому столбу (если данные совпадает то по второму) и т.д все данные одной строки остается вместе
  3. числа сортируется по возрастанию, слова альфабитном порядке, числа идут первее слов
  4. столбы в строках раздетелены табуляциеи ("\т")

пример файла:
-2.2 2 3 4 329 2
2.2 12345q 69 -afg
2.2 12345q 69 -asdf
-22 1234234 asdfasf asdgas
-22 11 abc
-22 -3 4
-1.1
qqqq 1.1
после сортировки
-22 -3 4
-22 11 abc
-22 1234234 asdfasf asdgas
-2.2 2 3 4 329 2
-1.1
2.2 12345q 69 -afg
2.2 12345q 69 -asdf
qqqq 1.1
в данный момент у меня сделано считавание файла
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ReadDataFile {
    public static List<List<String>> readData(String fileName) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(fileName + ".txt"));
        List<List<String>> data = new ArrayList<List<String>>();
        String line;
        while (true) {
            line = br.readLine();
            if (line == null)
                break;
            List<String>lines = Arrays.asList(line.split("\t"));
            data.add(lines);
            System.out.println(lines);
        }
        br.close();
        return data;
 
    }
 
}
и запись в другой файл

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
public class WriteToFile {
 
    public void writeToFile(String fileName) throws IOException {
        FileWriter writer = new FileWriter(fileName);
        List<List<String>> data = ReadDataFile.readData("input");
        
    /*  Collections.sort(data, new Comparator<List<String>>() {
            @Override
            public int compare(List<String> o1, List<String> o2) {
                // TODO Auto-generated method stub
                return o1.get(0).compareTo(o2.get(0));
            }
        });
        */
        for (List<String> lines : data) {
            for (int i = 0; i < lines.size(); i++) {
                writer.write(lines.get(i));
                if (i < lines.size() - 1) {
                    writer.write("\t");
                }
            }
            writer.write("\n");
 
        }
        writer.close();
    }
прошу совета, как реализовать сортировку по данным требованием
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.06.2017, 16:46
Ответы с готовыми решениями:

Отсортировать текстовый файл по значению XLINE с интервалом, заданным пользователем
Задача: есть текстовый файл вида: INLINE : 233 XLINE : 202 668417,50000 565878,00000 995,87421 INLINE : 234 XLINE...

Отсортировать двумерный массив заданным образом
Здравствуйте! помогите пожалуйста сделать сортировку двумерного массива так , чтобы он был приведен к такому виду 1 2 3 4 5 6 7 8 9 ...

Помогите с требованием накладной
как в требование накладной сделать чтобы материал(товар) списывался не только 10сч но и с 41 по желанию ??????????? помогите пожалуйста

1
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
02.06.2017, 12:51
Такой компаратор
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
Comparator<List<String>> comp = new Comparator<List<String>>(){
      @Override
      public int compare(List<String> o1, List<String> o2) {
          return compareImpl(o1, o2, 0);
      }
      private int compareImpl(List<String> o1, List<String> o2, int index){
          Predicate<String> p = l -> l.matches("-?\\d+(\\.\\d*)?");
          Comparator<String> c = Comparator.comparing(p::test, Boolean::compare).reversed()
               .thenComparing((m, n) -> p.test(m) ? Comparator.comparingDouble(Double::parseDouble).compare(m, n) : m.compareTo(n));
          return o1.size() != index ? o2.size() != index ?  c.compare(o1.get(index), o2.get(index)) == 0 ? compareImpl(o1, o2, index + 1) 
                                                                                                         : c.compare(o1.get(index), o2.get(index)) : 1 : -1;
     }
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2017, 12:51
Помогаю со студенческими работами здесь

Как отсортировать записи в файле по заданным полям без использования масссива?
Помогите пожалуйста с сортировкой Файла записей. Так как по условию файл не ограниченный, то массив использовать нельзя. Попробовал...

Отсортировать массив символов и определить, есть ли в массиве символ с заданным кодом
Дан массив, состоящий из 15 символов. Содержимое массива сортируется по убыванию. После этого вводится контрольное целое число в диапазоне...

Отсортировать в матрице столбцы по возрастанию значений элементов в строке с номером, заданным пользователем
writeln('Введите номер строки, по возрастанию элементов которой требуется отсортировать столбцы матрицы:'); readln(string_number); for...

Создайте текстовый файл. Во второй файл запишите строку с заданным номером
Создайте текстовый файл. Во второй файл запишите строку с заданным номером. сделать через функции/процедуры var f1, f2:...

Используя вспомогательный файл, заданным образом переписать компоненты исходного файла в результирующий файл
Дан файл f, компоненты которого являются целыми числами. Никакая из компонент файла не равна нулю. Файл f содержит столько же отрицательных...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru