Tableaux, listes et HashMaps

1°) Déclaration de tableaux :

2°) Comparaison de tableaux :

 //-- Comparaison de tOldMus avec tMusique  
         if (tOldMus.size()!=tMusique.size())  
         { tTmp = new ArrayList<musique>(tOldMus); //-- On copie toldMus dans tTmp  
           tTmp.removeAll(tMusique); //-- tTmp contient toutes les musiques qui n'existent plus  

           //-- Ajout des fichiers contenu dans tMusique dans tOldMus et dans dbOld  
           tTmp = new ArrayList<musique>(tMusique); //-- On copie toldMus dans tTmp  
           tTmp.removeAll(tOldMus); //-- tTmp contient toutes les musiques qui n'existent pas dans tOldMus  
          }   

3°) Concaténation :

array1.addAll(array2);

4°) Divers :

 package com.androapps.array;  
 import java.util.ArrayList;  
 import android.app.Activity;  
 import android.os.Bundle;  
 import android.widget.TextView;  
 public class ArrayActivity extends Activity {  
   @Override  
   public void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.main);  
     //-- Définition des variables  
     int i;  
     String resultat="";  
     Voiture voit;  
     Voiture res;  
     //-- On déclare un tableau de type "Voiture"  
     // pour une seule dimension : ArrayList<String> maListe = new ArrayList<String>();  
     ArrayList <Voiture> TabTaches = new ArrayList<Voiture>();  
     //-- Remplissage par l'ordre "add"  
      for(i=0; i<12;i++)  
     {voit = new Voiture(i+900,"Porche ");  
      TabTaches.add(voit);  
     }  
     //-- Récupération des données par l'ordre "get"  
     for(i=0 ; i < TabTaches.size(); i++)  
     {res = TabTaches.get(i);  
      resultat=resultat+res.marque+" "+res.nbCheveau+"\n";}  
     //-- Affichage du résultat  
         ((TextView)findViewById(R.id.Text)).setText(resultat);    
   }  
   //-- La classe qui permet d'avoir des dimensions dans le tableau   
   class Voiture {   
     String marque = "";   
     int nbCheveau = 0;   
     public Voiture(int i,String s) {   
       marque = s;   
       nbCheveau = i;   
     }   
   }     
 }  

Pour chercher dans un tableau :

 for (String s : TabStrings) {  
   int i = s.indexOf("software");  
   if (i >= 0) {  
     // found a match to "software" at offset i  
   }  
 }  

Exemple complet de tableau multidimentionnel trié :

Télécharger TriTableau.zip :https://app.box.com/s/apot4i843j4i6sjpqfnp

 Tri d’un ArrayList :  
     Comparator<String> comperator = new Comparator<String>() {  
          public int compare(String object1, String object2) {  
          return object1.compareToIgnoreCase(object2);  
          }  
          };  
     Collections.sort(data, comperator);  

Tableau simple (longueur fixe) avec tri :
String[] fruits = new String[] {« Pineapple », »Apple », « Orange », « Banana »};

Arrays.sort(fruits);

int i=0;
for(String temp: fruits){
System.out.println(« fruits  » + ++i +  » :  » + temp);
}
Tableau de type Arraylist (sans dimension fixée) :
List<String> fruits = new ArrayList<String>();

fruits.add(« Pineapple »);
fruits.add(« Apple »);
fruits.add(« Orange »);
fruits.add(« Banana »);

Collections.sort(fruits);

int i=0;
for(String temp: fruits){
System.out.println(« fruits  » + ++i +  » :  » + temp);
}
Tableau multidimmentionnel sans dimension fixe :
cf. code source : https://app.box.com/s/huc76iv8ci1fknui8446

 package com.andrologiciels.trimultitab;  
 import java.util.ArrayList;  
 import java.util.Collections;  
 import java.util.Comparator;  
 import android.os.Bundle;  
 import android.widget.ArrayAdapter;  
 import android.app.ListActivity;  
 public class MainActivity extends ListActivity {  
   private ArrayAdapter<String> dataAdapter;  
      @Override  
      protected void onCreate(Bundle savedInstanceState) {  
           super.onCreate(savedInstanceState);  
     //-- Définition du tableau de travail  
        ArrayList<sFiles> FileNames=new ArrayList<sFiles>();  
        //-- Déclaration du tableau pour l'affichage  
        ArrayList<String> TabNames = new ArrayList<String>();    
     //-- On efface le tableau avant de le remplir  
        FileNames.clear();  
     //-- Remplissage  
     sFiles sFileName = new sFiles("BExample",100);  
     FileNames.add(sFileName);  
     sFileName = new sFiles("AExample",2000);  
     FileNames.add(sFileName);  
     sFileName = new sFiles("XExample",150);  
     FileNames.add(sFileName);  
        //-- Tri par la colonne nom de fichier : FName  
        //Collections.sort(FileNames, new ReflectiveComparator(). new ListComparator("FName"));  
        //-- Tri par la colonne Longeur de fichier : FLong  
        Collections.sort(FileNames, new ReflectiveComparator(). new ListComparator("FLong"));  
        //-- Remplissage du tableau d'affichage  
        sFiles res; //-- Définition d'un objet de type sFiles  
        for(int i = 0 ; i < FileNames.size(); i++)  
        {res = FileNames.get(i);  
         TabNames.add(res.FName+"="+res.FLong+"kb");  
        }         
        //-- affichage du tableau  
        dataAdapter = new ArrayAdapter<String>(this, R.layout.item,  
             R.id.itemName, TabNames);  
        setListAdapter(dataAdapter);                
      }  
      public class ReflectiveComparator {  
        public class FieldComparator implements Comparator<Object> {  
          private String fieldName;  
          public FieldComparator(String fieldName){  
            this.fieldName = fieldName;  
          }  
          @SuppressWarnings({ "unchecked", "rawtypes" })  
          @Override  
          public int compare(Object object1, Object object2) {  
            try {  
              java.lang.reflect.Field field = object1.getClass().getDeclaredField(fieldName);  
              field.setAccessible(true);  
              Comparable object1FieldValue = (Comparable) field.get(object1);  
              Comparable object2FieldValue = (Comparable) field.get(object2);  
              return object1FieldValue.compareTo(object2FieldValue);  
            }catch (Exception e){}  
            return 0;  
          }  
        }  
        public class ListComparator implements Comparator<Object> {  
          private String fieldName;  
          public ListComparator(String fieldName) {  
            this.fieldName = fieldName;  
          }  
          @SuppressWarnings({ "unchecked", "rawtypes" })  
          @Override  
          public int compare(Object object1, Object object2) {  
            try {  
              java.lang.reflect.Field field = object1.getClass().getDeclaredField(fieldName);  
              field.setAccessible(true);  
              Comparable o1FieldValue = (Comparable) field.get(object1);  
              Comparable o2FieldValue = (Comparable) field.get(object2);  
              if (o1FieldValue == null){ return -1;}  
              if (o2FieldValue == null){ return 1;}  
              return o1FieldValue.compareTo(o2FieldValue);  
            } catch (NoSuchFieldException e) {  
              throw new IllegalStateException("Field doesn't exist", e);  
            } catch (IllegalAccessException e) {  
              throw new IllegalStateException("Field inaccessible", e);  
            }  
          }  
        }  
      }  
 }  

Et Class sFile :

 package com.andrologiciels.trimultitab;  
 //-- Here is the Files Class with title and real filename i.e. Example and example.txt  
 public class sFiles {   
   String FName = "";   
   Integer FLong = 0;   
   public sFiles(String FN,Integer FL) {   
     FName = FN;   
     FLong = FL;   
   }  
   public Integer getFLong()  
   {return FLong;}  
 }   

Et Layout :

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
      android:layout_width="fill_parent" android:layout_height="wrap_content"  
      android:orientation="horizontal" android:paddingLeft="5dp"  
      android:paddingRight="5dp">  
      <TextView android:id="@+id/itemName" android:layout_width="wrap_content"  
           android:layout_height="wrap_content" android:text="Test view" />  
 </LinearLayout>  

HashMaps :

Une HashMap est une liste dynamique non triée qui se gère de la manière suivante :

 package com.andrologiciels.androhashmap;  
 import java.util.HashMap;  
 import android.os.Bundle;  
 import android.app.Activity;  
 import android.view.Menu;  
 import android.widget.TextView;  
 public class ActivityHash extends Activity {  
      @Override  
      protected void onCreate(Bundle savedInstanceState) {  
           TextView ResText;  
           String  cRes = null;  
           super.onCreate(savedInstanceState);  
           setContentView(R.layout.ecran_hash);  
           //-----------  
           ResText = (TextView) findViewById(R.id.afficres);  
           //-- Création du HashMap  
           HashMap<String,String> hm = new HashMap<String, String>();               
           //-- Remplissage  
           hm.put("Brown", "Da Vinci Code");  
           hm.put("Coben", "Ne le dis à personne");  
           hm.put("Chrichton", "Jurassik Park");  
           hm.put("Vargas", "Sous les vents de Neptune");  
           hm.put("Vargas", "L'homme à l'envers");  //-- Même entrée = on efface la valeur                
           //-- HashMap iteration  
           for (String key: hm.keySet())  
           { if (cRes!=null)  
              cRes=cRes+key+" : "+hm.get(key)+"\n";  
            else  
                 cRes=key+" : "+hm.get(key)+"\n";  
           }  
           cRes=cRes+"\n";  
           //-- Test de la Clef  
           if (hm.containsKey("Vargas"))  
             cRes=cRes+("HashMap contient 'Vargas'");  
        //-- Test de présence de valeur   
           if (hm.containsValue("Jurassik Park"))  
             cRes=cRes+("HashMap contient la valeur 'Jurassik Park'");  
           ResText.setText(cRes);  
      }  
 }  

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Articles récents
Commentaires récents
fatima sur Bienvenue !
AdminDroid sur Bienvenue !
fatima sur Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :