0
votes

Comment trier le premier timbre de l'heure de la liste en Java?

my Timestamps = [12:40 PM, 4:00 PM, 7:20 PM, 10:40 PM, 12:00 PM, 3:25 PM, 6:50 PM, 10:15 PM, 6:35 PM, 9:50 PM, 12:20 PM, 3:45 PM, 7:15 PM, 10:40 PM, 11:45 AM, 3:10 PM, 6:35 PM, 10:25 PM, 12:50 PM, 4:10 PM, 7:30 PM, 10:40 PM]

0 commentaires

4 Réponses :


0
votes

Un problème est qu'un temps tel que 4 pm apparaîtra comme 4.0 dans votre liste, ce qui précède une heure comme 11h45 (qui apparaît comme 11.45 ). Je suggère de jeter un coup d'oeil à la classe comme java.util.date et des amis et trouvez une fonction qui convertit ces heures à un autre format comme des secondes depuis la notation minuit ou 24 heures, puis trier ce format.


0 commentaires

1
votes

L'une des solutions les plus simples pour vous est le code ci-dessous avec quelques modifications de la vôtres:

  • Convertir 12: MM AM / PM par 00: MM AM / PM Avant le tri
  • transformer HH: mm am en HH.mm et HH: mm en (HH + 12) .mm
  • Trier la liste
  • convert hh.mm en HH: mm am / pm XXX

    avec la liste xxx

    Le résultat est le suivant: xxx

    Un code plus efficace arrive Dans une autre modification ultérieure.


0 commentaires

0
votes

Je vous recommande de le faire en utilisant le Date moderne -Time API * . xxx

sortie: xxx

Mise à jour: Postage du code avec une expression non-Lamda pour le tri (demandé par op dans la section des commentaires) xxx

En savoir plus sur la date moderne- API TIME DE Trail: Date Time .


* Pour une raison quelconque, si vous devez vous tenir à Java 6 ou Java 7, vous pouvez utiliser Thraeten-backport qui réalise la plupart des fonctionnalités java.time à Java 6 et 7. Si vous travaillez pour un projet Android et que votre niveau d'API Android n'est toujours pas conforme à Java-8, cochez API JAVA 8+ Disponible via Desseuing et Comment utiliser Threetenabp dans Android Project .


2 commentaires

Merci Arvind, pourriez-vous m'expliquer la ligne n ° 22 et 24.


Ce sera génial si vous pouviez le changer en expression non Lambda, je ne suis pas si bien versé avec une expression de Lambda.



0
votes

Essayez d'utiliser ce code. C'est compact. Utilise Java8 pour définir un comparateur qui fera notre travail pour trier le temps de la manière. ` xxx

`

pour entrée de
String A = "12h40, 16h00, 7h20, de 22h40 à 12h00, 15h25, 18h50, 22h15, 6:35 PM, de 21h50, 12h20, 15h45, 19h15, 23h40, 15h45, 15h10, 18h35, 22h25, 12:50 PM, 16h10, 19h30, 22h40 ";

La sortie sera:
[11h45, 3h25, 7h20, 22h15, 22h25, 22h40, 22h40, 22h40, 12h00, 12 : 20h00, 12h50, 15h10, 15h45, 16h00, 16h30, 18h35, 18h35, 18h50, 19h15, 7h15, 7 : 30h00, 21h50, 12h40] J'espère que cela résout votre problème.


0 commentaires