Fonction qui transforme un String en NumeroTel, ajout annuaire
Résolu/Fermé
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
-
Modifié par hedii le 15/06/2013 à 11:45
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013 - 15 juin 2013 à 15:38
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013 - 15 juin 2013 à 15:38
A voir également:
- Fonction qui transforme un String en NumeroTel, ajout annuaire
- Fonction si et - Guide
- Annuaire inversé - Guide
- Ajout snap sans rien - Forum Snapchat
- Annuaire inversé gratuit réponse immediate ✓ - Forum Réseaux sociaux
- Annuaire maroc telecom particulier ✓ - Forum Mobile
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 15/06/2013 à 15:18
Modifié par KX le 15/06/2013 à 15:18
L'un des intérêts d'une classe est de stocker une valeur en mémoire en limitant autant que possible la taille de cette valeur.
Par exemple un numéro de téléphone à 10 chiffres :
Il peut-être représenté par un String (ou un char[]) dans ce cas il y a autant de caractères que de chiffres, donc une taille de 10 octets.
Il y a également la possibilité comme tu l'as fait de faire 5 entiers, mais tu utilises des int, qui font 4 octets chacun, ce qui te fait une représentation à 20 octets.
Dans la mesure où tes entiers doivent tous être entre 00 et 99, tu pourrais utiliser des byte à la place des int, donc 5 byte ce qui ferait une représentation à 5 octets.
Encore mieux, en France et dans d'autres pays, tous les numéros commencent par 0, du coup ce n'est pas la peine de le stocker et on peux se limiter aux 9 chiffres significatifs, qui rentrent facilement dans un seul int, donc une représentation à 4 octets.
Ainsi, au lieu d'avoir 5 int tu peux t'en sortir avec 1 seul ! C'est économe en mémoire et plus facile à gérer vu que tu n'auras qu'un seul attribut privé.
PS. je ne comprends pas ce que tu veux faire avec ton attribut "NumeroTel numero", à mon avis il ne sert à rien, tu dois confondre avec this.
Le gros avantage de cette représentation c'est pour tes Hashtable parce que tu ne l'as pas géré du tout dans ton code, mais le hashCode de ta classe NumeroTel doit être redéfini, et puisque c'est un int, ici c'est immédiat, il suffit de renvoyer l'attribut numero qui garantie une bonne valeur de hachage !
Par exemple un numéro de téléphone à 10 chiffres :
Il peut-être représenté par un String (ou un char[]) dans ce cas il y a autant de caractères que de chiffres, donc une taille de 10 octets.
Il y a également la possibilité comme tu l'as fait de faire 5 entiers, mais tu utilises des int, qui font 4 octets chacun, ce qui te fait une représentation à 20 octets.
Dans la mesure où tes entiers doivent tous être entre 00 et 99, tu pourrais utiliser des byte à la place des int, donc 5 byte ce qui ferait une représentation à 5 octets.
Encore mieux, en France et dans d'autres pays, tous les numéros commencent par 0, du coup ce n'est pas la peine de le stocker et on peux se limiter aux 9 chiffres significatifs, qui rentrent facilement dans un seul int, donc une représentation à 4 octets.
Ainsi, au lieu d'avoir 5 int tu peux t'en sortir avec 1 seul ! C'est économe en mémoire et plus facile à gérer vu que tu n'auras qu'un seul attribut privé.
PS. je ne comprends pas ce que tu veux faire avec ton attribut "NumeroTel numero", à mon avis il ne sert à rien, tu dois confondre avec this.
public class NumeroTel { /** * 9 chiffres significatifs du numéro de téléphone (le 0 est implicite) * Exemple : "01.23.45.67.89" --> numero=123456789 */ private final int numero;
Le gros avantage de cette représentation c'est pour tes Hashtable parce que tu ne l'as pas géré du tout dans ton code, mais le hashCode de ta classe NumeroTel doit être redéfini, et puisque c'est un int, ici c'est immédiat, il suffit de renvoyer l'attribut numero qui garantie une bonne valeur de hachage !
@Override public int hashCode() { return numero; }La confiance n'exclut pas le contrôle
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
15 juin 2013 à 15:38
15 juin 2013 à 15:38
Merci pour votre reponse KX, c'est un exercice de TP je dois gardeer 5 entiers et utiliser la fonction pour convertir en string.