J'essaie de créer une API de repos Kotlin, qui récupère des valeurs à partir d'une base de données PostgreSQL. Maintenant, les valeurs de ces résultats sont F.e. maintenant ce que j'essaie de faire est de créer une fonction qui les commandera par date passée. (Supposons que ces chaînes sont dans une matrice) p> Quelle serait la manière la plus propre (et la plus fonctionnelle) de les trier? (SO FE Y a-t-il une manière où je n'ai pas à prendre des sous-chaînes de la journée, du mois, etc. les jeter à un "14-10-2016 | 15:48" code> et "01-08-2015 | 09:29" code> donc la syntaxe est donc dd-mm-aaaa aaaa | HH: mm code> int code>, comparez-les dans une boucle imbriquée et écrivez les résultats à un autre tableau? (C'est la seule façon dont je pouvais penser). p> p>
4 Réponses :
Vous pouvez utiliser sortie p> update strud> p> Vous pouvez simplement convertir en DateTimeformatter code> pour analyser, puis comparer avec localDateTime code> localDateTime code> dans comparateur code> seul p> [01-08-2015 | 09:29, 14-10-2016 | 15:48, 15-11-2016 | 19:43]
Pas sûr que Kotlin est compatible avec Java 8, mais de toute façon, je suppose que l'OP cherchait une solution écrite à Kotlin.
@Egor désolé, je connais Java seulement mais la logique serait semblable à la réponse que j'ai postée
Une autre alternative à l'excellente réponse de Saravana (pour des freaks minimalistes et compacts comme moi ..) est le suivant:
val cmp = compareBy<String> { LocalDateTime.parse(it, DateTimeFormatter.ofPattern("dd-MM-yyyy | HH:mm")) }
list.sortedWith(cmp).forEach(::println)
01-08-2015 | 09:29
14-10-2016 | 15:48
15-11-2016 | 19:43
Au lieu d'utiliser mapper code> pour imprimer, peut-être utiliser list.sortedwith (cmP) .foreach (:: println) code>
Plus d'une approche peut être utilisée. Cela dépend de la manière dont vous traitez après avoir obtenu le résultat trié.
points à noter: p>
java.time.localdateTetime code> a déjà mis en œuvre
Java.Lang.Comparable code> interface. Nous pouvons utiliser le kotlin stdlib list.sortby code> pour trier la liste code> directement. Li>
ul> ref: p> xxx pré> Le moyen le plus simple est de transformer la chaîne -> java.time.localdateTetime code> et utilisez le < code> list.sortby code> directement. p> L'ensemble de la mise en œuvre pourrait être comme ceci: p> xxx pré> Si vous souhaitez utiliser org .joda.time.dateTime code>, vous pouvez simplement créer un petit changement sur la fonction convert. p> un rappel amical, choisissez toujours val code> comme votre premier choix à Kotlin :). p> p>
@Elect Les objets immuables sont toujours plus faciles à suivre et peuvent être utilisés dans un environnement fileté mutli sans aucun inquiétude. La plupart du temps, vous n'aurez pas besoin var code> à Kotlin si vous connaissez une approche fonctionnelle. Mais var code> est plus efficace de mémoire, utilisez-le judicieusement pour prendre le seul avantage.
L'appel nécessite le niveau d'API 26. Des solutions compatibles en retard?
Si vous utilisez une liste de dates d'objet personnalisée triés comme ci-dessous.
println("--- ASC ---")
dates.sortBy { it.year }
println("--- DESC ---")
dates.sortByDescending { it.year }