Java - ArrayList

Exemples d'insctructions

import java.util.ArrayList;

ArrayList<Person> myList = new ArrayList<Person>();


myList.add(Object);

myList.clear();

if (myList.contains(Object)) { }

obj = myList.get(int);

i = myList.indexOf(Object); // -1 si pas trouvé

myList.remove(int);

myList.set(int, Object);

i = myList.size();

for (int i=0;i<myList.size();i++) { }

objAr = myList.toArray();


myJList.setListData(myList.toArray());

setSelectedIndex(int);

i = getSelectedIndex();

Boucles «for» pour parcourir une ArrayList

Nous supposons qu'on a une classe Town avec les attributs name (String) et inhabitants (int).

private ArrayList<Town> alTowns = new ArrayList<>();

public void none() {
// a) parcourir la liste 
    for (int i=0;i<alTowns.size();i++) {
        Town t = alTowns.get(i);
        // ...
    }
// b) parcourir la liste à l'envers
    for (int i=alTowns.size()-1;i>=0;i--) {
        Town t = alTowns.get(i);
        // ...
    }
// c) parcourir la liste pour accéder tous les éléments qui se suivent
    for (int i=1;i<alTowns.size();i++) {
        Town t1 = alTowns.get(i-1);
        Town t2 = alTowns.get(i);
        // ...
    }
// d) double boucle pour comparer chaque couple différent dans un seul sens
    for (int i=0;i<alTowns.size();i++) {
        Town t1 = alTowns.get(i);
        for (j=i+1;j<alTowns.size();j++) {
            Town t2 = alTowns.get(j);
            // ...
        }
    }
// e) double boucle pour comparer chaque couple différent dans les deux sens
    for (int i=0;i<alTowns.size();i++) {
        Town t1 = alTowns.get(i);
        for (j=0;j<alTowns.size();j++) {
            if (i!=j) {
                Town t2 = alTowns.get(j);
                // ...
            }
        }
    }
// f) double boucle pour comparer chaque couple possible, même réflexif (int i=j)
    for (int i=0;i<alTowns.size();i++) {
        Town t1 = alTowns.get(i);
        for (j=0;j<alTowns.size();j++) {
            Town t2 = alTowns.get(j);
            // ...
        }
    }
// exemple a) la somme des habitants    
    int sum=0;
    for (int i=0;i<alTowns.size();i++) {
        Town t = alTowns.get(i);
        sum += t.getInhabitants;
    }
// exemple b) supprimer les villes peu peuplées (<1000000)
    for (int i=alTowns.size()-1;i>=0;i--) {
        Town t = alTowns.get(i);
        if (t.getInhabitants<1000000)
            alTowns.remove(i);
    }
// exemple c) la liste est-elle triée selon les noms ?
    boolean sorted=true;
    for (int i=1;i<alTowns.size();i++) {
        Town t1 = alTowns.get(i-1);
        Town t2 = alTowns.get(i);
        if (t1.getName().compareTo(t2.getName)>0)
            sorted=false;
    }
    if (sorted) // ...
// exemple d) comparer les habitants de toutes les villes
    for (int i=0;i<alTowns.size();i++) {
        Town t1 = alTowns.get(i);
        for (j=i+1;j<alTowns.size();j++) {
            Town t2 = alTowns.get(j);
            System.out.print("La ville de "+t1.getName()+" a ");
            if (t1.getInhabitants()>t2.getInhabitants()) System.out.print("plus");
            else if (t1.getInhabitants()==t2.getInhabitants()) System.out.print("autant");
            else System.out.print("moins");
            System.out.print(" d'habitants que la ville de "+t2.getName()+". ");
        }
    }
// exemple e) questions pour tous les voyages possibles 
    for (int i=0;i<alTowns.size();i++) {
        Town t1 = alTowns.get(i);
        for (j=0;j<alTowns.size();j++) {
            Town t2 = alTowns.get(j);
            if (i!=j) {
                System.out.print("Y a-t-il un vol direct de "+t1.getName()+" à "+t2.getName()+" ? ");
            }
        }
    }


[rrjavalist]