CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Générer des ID uniques.

shinigota
shinigota
Niveau 10
16 juillet 2014 à 16:45:50

Salut !
Je cherche à générer automatiquement des IDs à la façon base de données :
Je créée une entité machin, elle portera l'ID 1.
J'en créée une autre, elle portera l'ID 2, la suivante 3, etc ...

Mais je sais absolument pas comment m'y prendre là :(

Je pourrais à la limite générer un nombre aléatoire, mais c'est pas vraiment unique, enfin on peut tomber sur le même nombre même s'il y a une chance infime ...

Merci d'avance de l'aide, bon aprem ! :p

Pseudo supprimé
Pseudo supprimé 16 juillet 2014 à 16:53:22

Bah tu incrémentes juste l'ID à chaque fois du coup ...

_skip
_skip
Niveau 10
16 juillet 2014 à 16:57:43

Ou bien si c'est viable, la date en millième ça peut aussi le faire si c'est un truc avec une action manuel.
Après y'a les UUID et ça mais bon...

shinigota
shinigota
Niveau 10
16 juillet 2014 à 17:38:03

Ah oui la date c'est pas bête :)

TheArcanum :d) Ouais mais comment ? Avec une variable statique ça serait pas très propre :hap:

Pseudo supprimé
Pseudo supprimé 16 juillet 2014 à 17:42:19

Bah si tu veux pas faire ça dans ta fonction qui assigne une id tu vas chercher la dernière ID, et tu assignes la dernière ID + 1..

Tharsis
Tharsis
Niveau 10
16 juillet 2014 à 18:59:44

Avec un nombre aléatoire tu pourrais faire un test :
si le nombre n'est pas déjà attribué... sinon en générer un autre (enfin ce serait peut-être plutôt une boucle du coup)
Mais faudrait que les objets dont il est question soient rangés dans un tableau ou un HashMap ou un truc du genre :(

dark_drow
dark_drow
Niveau 15
16 juillet 2014 à 19:13:36

En soit la variable statique c'est pas forcément dégeulasse, éventuellement en mettant la méthode en synchronized pour être sur si jamais ton appli est multi threadé

Et si ce fameux id doit être partagé entre plusieurs classes différentes c'est peut être que tu as oublié un héritage quelque part ?

Sinon tu as toujours la méthode bourrin de faire String uniqueID = UUID.randomUUID().toString();

LEpigeon-888
LEpigeon-888
Niveau 12
16 juillet 2014 à 19:19:41

"si le nombre n'est pas déjà attribué... sinon en générer un autre (enfin ce serait peut-être plutôt une boucle du coup)"

Boucle infinie possible et donc plantage du programme :oui:

Et perso j'utiliserais aussi une variable statique :(

shinigota
shinigota
Niveau 10
16 juillet 2014 à 19:24:48

"Et si ce fameux id doit être partagé entre plusieurs classes différentes c'est peut être que tu as oublié un héritage quelque part ? "

Oui, en fait dans mon jeu j'ai des équipements boucliers, armure et arme.
En elles même elles n'ont absolument rien en commun, du coup je voyais pas l'intérêt d'utiliser l'héritage :(

Mais au fur et à mesure, j'me rend compte que pour afficher mon inventaire, acheter ses équipements bah mes classes ont des points en commun, du coup je vais faire une superclasse :oui:

Bon, bah j'utiliserais une variable statique, merci de l'aide ! :hap:

Tharsis
Tharsis
Niveau 10
16 juillet 2014 à 19:28:27

"Boucle infinie possible et donc plantage du programme :oui: "

:d) On en sortirait à l'attribution du numéro, comment ça planterait ? Enfin après je sais pas comment l'auteur conçoit son programme, y aurait théoriquement un nombre indéfini d'éléments auxquels attribuer des numéros ou non ? :(

shinigota
shinigota
Niveau 10
16 juillet 2014 à 20:07:31

Bah, dans la map j'ai tant d'ennemis qui ont un nombre d'arme défini.
Mais à partir du moment où le joueur lui même défini le nombre d'armes qu'il a sur son défaut, c'est plus vraiment défini :question:

Mais le pense que la boucle n'est pas le plus pratique, je pense rajouter des ids pour toutes les entités, et si je dois faire la boucle pour les ids d'armes, puis pour les boucliers, les météorites, ennemis, ... si y'en a beaucoup ça pourrait provoquer des ralentissements ? :(

Tharsis
Tharsis
Niveau 10
16 juillet 2014 à 21:05:06

Ah à ce niveau-là j'en ai aucune idée, a priori je pense que c'est une solution qui pourrait marcher, après en terme "d'optimisation" j'y connais rien vu que j'ai jamais vraiment programmé de truc énorme...
En fait quand tu parlais d'ID j'imaginais un truc dégueulasse genre 35w3dfg5f344 mais si c'est juste numéroté de 1 à n une simple variable que tu incrémentes devrait suffire, ou je suis pas bien sûr de saisir ton problème. :(

shinigota
shinigota
Niveau 10
16 juillet 2014 à 22:05:35

Nan c'est bien une variable numérotée de 1 à n :noel:
J'avais fais des recherches et j'avais vu que beaucoup utilisaient les trucs justement dégueux, et j'me suis dit, ouais mais c'est généré aléatoirement, donc y'a quand même une chance, infime, mais présente d'avoir les mêmes ids, donc si plus tard j'ai une big map avec trois tonnes de vaisseaux et plein d'armes, y'a un peu plus de chances d'avoir les mêmes ids :hap:

Quoi qu'il en soit, merci beaucoup :)

LEpigeon-888
LEpigeon-888
Niveau 12
17 juillet 2014 à 02:29:01

" :d) On en sortirait à l'attribution du numéro, comment ça planterait ? Enfin après je sais pas comment l'auteur conçoit son programme, y aurait théoriquement un nombre indéfini d'éléments auxquels attribuer des numéros ou non ? :( "

Bah si tu choisis un numéro aléatoirement, que tu regarde si il est prit, et que si oui tu recommence l'opération, tu peux avoir tout le temps un numéro déjà pris qui sort, et donc une boucle infinie potentielle :oui:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment