@alex_terekhov

Как решить задачку на Kotlin?

Всем привет!
Есть мультилайн текст такого вида:
6 need 10 GiB Tue May 12 10:14:09 2020
1 gitlab-database-2020-05-12-10-00-00 10 GiB Tue May 12 10:14:09 2020
10 2020-05-25 10 GiB Mon May 25 21:59:59 2020
3 gitlab-database-2020-05-12-10-00-00 10 GiB Tue May 12 10:14:09 2020
4 gitlab-database-2020-05-12-10-00-00 10 GiB Tue May 12 10:14:09 2020
5 gitlab-database-2020-05-12-10-00-00 10 GiB Tue May 12 10:14:09 2020
2 gitlab-database-2020-05-12-10-00-00 10 GiB Tue May 12 10:14:09 2020

9 2020-05-20-19-00-00 10 GiB Wed May 20 19:49:22 2020

11 2020-05-25-hjhhjbg 10 GiB Mon May 25 21:59:59 2020

Задача на kotlin отсортировать по 1му столбцу и вывести 2й столбец ,без последних пяти строк, подскажите хотяб идею как, сделать, я недавно стал изучать kotlin....
  • Вопрос задан
  • 761 просмотр
Решения вопроса 3
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
1) Разбить на строки (split)
2) Распарсить каждую строку регуляркой(regexp) и сложить в объект с двумя полями (первым и вторым)
3) Отсортировать список объектов(sort)
4) Взять необходимое количество объектов из списка (take/drop)
...
Профит!
Ответ написан
  1. Прочитать построчно, выполнить split с пробелом в качестве delimiter лимитом 3.
  2. Каждую строку после разбивки добавить в список.
  3. Отсортиовать полученный список
Ответ написан
@koperagen
Предполагая, что вы прочитали этот файл и сохранили в List, где DataObject это представление строки из этого файла, что-то вроде data class DataObject(val n: Int, val item: String, val date: String), код можно написать примерно так
val representation = list
  .sortedBy { it.n }
  .map { it.item }
  .dropLast(5)
  .joinToString("\n")
println(representation)

Собственно из примера не очень понятно, что за файл и его формат. Вроде похоже на CSV с 3 столбцами, тогда берем https://github.com/doyaaaaaken/kotlin-csv
val file: File = File("test.csv")
  val rows: List<List<String>> = csvReader().readAll(file)
  val list: List<DataObject> = rows.map { (first, second, third) -> DataObject(first.toInt(), second, third) }

Получаем нужный список с данными из таблицы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы