IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

initialisation static d'une liste


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 82
    Par défaut initialisation static d'une liste
    Bonjour,

    Je voudrais faire une methode static qui renvoie une liste de string sans avoir à la recréer à chaque fois. Celle liste est fixe et est connue au début.

    J'avais pensé au code suivant mais je suis pas sur que ca marche à cause du multithread.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private static List listDetailsOfCharge = null;
    	private static List getDetailsOfChargeList() {
    		if(listDetailsOfCharge==null){
    			listDetailsOfCharge = new ArrayList();
    			listDetailsOfCharge.add("BEN");
    			listDetailsOfCharge.add("OUR");
    			listDetailsOfCharge.add("SHA");
    		}
    		return listDetailsOfCharge;
    	}
    Ensuite j'ai pensé à ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private static List listDetailsOfCharge = new ArrayList();
    static {
    	listDetailsOfCharge.add("BEN");
    	listDetailsOfCharge.add("OUR");
    	listDetailsOfCharge.add("SHA");
    }
    	private static List getDetailsOfChargeList() {
    		return listDetailsOfCharge;
    	}
    Sans utiliser de synchronise comment je fais?

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Dans ton premier code, la méthode doit être décarée synchronized pour être utilisée dan un contexte multithread.
    Mais dans ton cas le second code est préférable (plus performant car pas besoin de synchronized).
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Ou directement, en 1 ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static List<String> listDetailsOfCharge = new ArrayList<String>() {{ add("BEN"); add("OUR"); add("SHA"); }};

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static List<String> CHARGE_DETAILS_LIST = Collections.unmodifiableList(Arrays.asList(new String[] {"BEN", "OUR", "SHA"}));
    Sinon une enum ca marche bien aussi.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2002
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 82
    Par défaut
    Merci pour vos réponses, je vais donc garder mon 2eme code.
    J'aurai du préciser que j'etais pas en JDK1.5, mais en 1.4

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Je pense que si tu utilises asList, tu n'as pas besoin de unmodifiableList (c'est déjà une unmodifiableList il me semble)...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 94
    Par défaut
    Citation Envoyé par ®om
    Je pense que si tu utilises asList, tu n'as pas besoin de unmodifiableList (c'est déjà une unmodifiableList il me semble)...
    La taille de la liste est fixe mais on peut en changer les éléments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     /**
         * @serial include
         */
        private static class ArrayList<E> extends AbstractList<E>
    	implements RandomAccess, java.io.Serializable
        {
            private static final long serialVersionUID = -2764017481108945198L;
    	private Object[] a;
    
    	ArrayList(E[] array) {
                if (array==null)
                    throw new NullPointerException();
    	    a = array;
    	}
    
    	public int size() {
    	    return a.length;
    	}
    
    	public Object[] toArray() {
    	    return (Object[])a.clone();
    	}
    
    	public E get(int index) {
    	    return (E)a[index];
    	}
    
    	public E set(int index, E element) {
    	    Object oldValue = a[index];
    	    a[index] = element;
    	    return (E)oldValue;
    	}
    
            public int indexOf(Object o) {
                if (o==null) {
                    for (int i=0; i<a.length; i++)
                        if (a[i]==null)
                            return i;
                } else {
                    for (int i=0; i<a.length; i++)
                        if (o.equals(a[i]))
                            return i;
                }
                return -1;
            }
    
            public boolean contains(Object o) {
                return indexOf(o) != -1;
            }
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Initialiser items d'une liste dans Frame
    Par colorid dans le forum Langage
    Réponses: 2
    Dernier message: 28/07/2011, 15h37
  2. Comment ré-initialiser une liste déroulante ?
    Par jeje22 dans le forum Access
    Réponses: 5
    Dernier message: 03/06/2009, 21h32
  3. Comment initialiser une liste déroulante ?
    Par sergoi dans le forum Struts 1
    Réponses: 5
    Dernier message: 12/07/2007, 11h35
  4. Comment initialiser une liste dans la méthode reset()
    Par don'de dans le forum Struts 1
    Réponses: 10
    Dernier message: 19/03/2007, 21h17
  5. Comment initialiser une liste de composants avec une boucle ?
    Par EricSid dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/04/2005, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo