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);
}
}
Votre commentaire