Rechercher : dans
Par :

Taille d'arraylist

Dernière réponse le 20 jan 2009 à 17:40:05 titfofol, le 19 jan 2009 à 22:57:33 
 Signaler ce message aux modérateurs

Bonjour,

Je voudrais savoir si c'est possible de connaitre la taille d'une arraylist?

Merci d'avance

Titfofol

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Taille d'arraylist » dans :
Diminuer la taille d'une image Voir Si vous trouvez que vos photos sont trop grosses ou trop lourdes (par exemple pour envoyer par mail ou pour publier sur une page web), voici 4 étapes pour diminuer la taille des fichiers: Étape 1 (optionnel !) : Passer GREYCStoration sur...
Optimiser la taille des images PNG Voir On peut optimiser de manière importante la taille des fichiers PNG, ce qui est particulièrement intéressant pour les pages web. La méthode décrite ci-dessous permet de réduire les fichiers PNG en moyenne à 40% de leur taille originale. Comment...
Windows 7 & Vista: changer la taille et la police de Windows Voir Avoir un bureau et une écriture moins traditionnelle . Tout ce que l'on peut distinguer comme écriture, pour les menus, les fenêtres, les icônes, les Systèmes Windows 7 et Vista utilisent une police et une taille par défaut . Cette ...
Modifier la taille du menu démarrer VoirVoici comment changer à volonté la taille de votre menu démarrer. Faites un clic droit sur le menu démarrer, puis, choisissez propriétés. Cliquez sur Personnaliser, dans la nouvelle fenêtre, augmentez ou diminuez le nombre de programmes récents...
[Webmaster] Afficher une image de grande taille VoirPour la plupart des internautes, afficher une image de grande taille dans une page web est trop lourd. Zoomify est un petit programme Flash qui permet de rendre une image zoomable et navigable, et chargeant l'image par morceau selon le...

1

kilian, le 19 jan 2009 à 23:01:31
  • +1

Salut,

http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.­html#size() Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

2

titfofol, le 19 jan 2009 à 23:37:05

Bonjour Kilian,

Merci pour ton site mais bon, je ne comprends pas trop l'anglais et même avec un site de traduction je n'y arrive pas... tu peux m'éclairer un peu plus s'il te plait

Merci d'avance

Titfofol

Répondre à titfofol

3

kilian, le 19 jan 2009 à 23:41:19

Que tu comprennes l'anglais ou pas, c'est juste qu'il faut utiliser la méthode size() de ArrayList ;-) Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

4

titfofol, le 19 jan 2009 à 23:46:16

Bha je ne comprends pas alors...

J'ai fait un petit programme en utilisant le size() mais il me met une erreur...

Pourrais-tu m'aider?

for (i=1;TouteLigne.size();i++){...}


il me souligne TouteLigne.size(), c'est normal?!

l'erreur est : "Type mismatch: cannot convert from int to boolean"

cordialement

titfofol

Répondre à titfofol

5

kilian, le 19 jan 2009 à 23:49:46
  • +3

Au milieu d'un for, il faut une condition, ce qui correspond à une expression booléenne ;-)

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

i < TouteLigne.size() retournera true ou false. Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

6

kilian, le 19 jan 2009 à 23:53:40

Un exemple:

ArrayList<Integer> ar = new ArrayList<Integer>();

ar.add(1);
ar.add(2);

System.out.println(ar.size()); // affiche 2

for (int i = 0; i < ar.size(); i++) {
    System.out.println(ar.get(i));
} // Affichera 1 puis 2
Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

7

titfofol, le 19 jan 2009 à 23:57:57

A nooonn... Elle était carément bête mon erreur... Merci de m'avoir éclairé..

Mais je peux te demander juste une autre question sur les arraylist? comment je pourrais faire pour mettre une ligne de mon arraylist dans une variable de type string?

moi j'ai mit :

String Ligne = TouteLigne[i];


mais ca ne fonctionne pas je pense qu'il faudrait une formule du genre TouteLigne.QuelqueChose non?!

Merci d'avance

Cordialement

Titfofol

Répondre à titfofol

8

kilian, le 20 jan 2009 à 00:00:40

Ca dépend, il est de quel type ton ArrayList ? Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

9

titfofol, le 20 jan 2009 à 00:03:44

Ha bon o_o, il y a diférent type d'arrayList?

bha je ne sais pas (désolé je débute en java) en tout cas dans mon arraylist il y a des information que j'ai récupéré dans un fichier. ensuite je réinjecterait le tout dans une BDD...

Titfofol

Répondre à titfofol

11

kilian, le 20 jan 2009 à 00:18:33

Tu l'as déclaré comment en fait?

Un arraylist peut être générique:

ArrayList ar = new ArrayList()

En ce cas il contiendra des objets de type "Object".

Sinon tu peux lui dire qu'il contiendra des objets d'un type particulier:
ArrayList<String> ar = new ArrayList<String>();

On appelle ça un template, c'est à dire une classe, généralement un conteneur d'éléments comme les arraylist, qui prend un type en paramètre: le types de ses éléments.

Si ton arraylist est générique, alors il faut d'abord vérifier le type de ton élément pour être sûr que c'est un String (à moins que tu en sois vraiment sûr):
ArrayList ar = new ArrayList()
ar.add("prout");
if (ar.get(0) instanceof String)
    String pe = (String)ar.get(0); // <-- Il faut le caster de Object vers String

Mais là comme on est sûr que c'est un String, on peux éviter ce test de instanceof (mais le cast reste obligatoire)

Par contre si c'est un arraylist de String, pas du tout besoin de faire un test ni de cast, tu es sûr qu'il n'y a que des String dedans:
ArrayList<String> ar = new ArrayList<String>();
ar.add("prout");
String pe = ar.get(0);


C'est utile d'avoir un ArrayList générique (tous les types d'objets héritent de Object en java, donc tous les objets sont des Objects) pour stocker des éléments divers dont on se fout éperdument du type. Tu peux mettre des entiers, des String, des chaussettes.
Mais c'est pas terrible pour récupérer ses valeurs puisqu'il faut vérifier leur type (instanceof) et caster.

Avoir des arraylist typés permet de moins se prendre la tête.
Tu comprends?
Enfin en même temps je t'explique ça mais si ça se trouve tu débutes et tu n'as pas encore beaucoup vu l'orienté objet... Donc ça doit te paraître flou, ce qui est normal je te rassure ;-) Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

12

kilian, le 20 jan 2009 à 00:23:10

Prends garde!! Je viens d'éditer mon message, j'avais oublié les cast. Pauvre fou que je suis.... Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

10

titfofol, le 20 jan 2009 à 00:15:13

Un arrayList ce n'est pas juste un objet?

Répondre à titfofol

13

titfofol, le 20 jan 2009 à 00:28:22

Oui bha en fait on a vu la programmation orienté objet mais bon comme tu l'as dit c'est encore un peu flou... on a pas encore eut le déclic dans la tête...

alors, en fait mon ArrayList est un ArrayList simple, un ArrayList generique (pour employer les bons thermes).

Par contre dans mon fichier (les valeurs que j'ai inséré dans l'ArrayList) sont alphanumérique, donc ça veux dire que c'est concidéré comme un String? non?! ca veux dire que ma variable Ligne est bien déclarée? oui?!

Cordialement

Titfofol

Répondre à titfofol

15

kilian, le 20 jan 2009 à 00:33:06

Ben...ça dépend comment tu as lu ton fichier, si c'est un StreamReader ou je sais plus quoi :-DD
Ah c'est drôle hein le java? ;-) Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

14

titfofol, le 20 jan 2009 à 00:31:55

Les cast c'est quoi c'est quand tu castes une variable? c'est à dire quand tu veux passer de int à String par exemple?

Répondre à titfofol

16

kilian, le 20 jan 2009 à 00:35:05

Tout à fait, sauf que t'as pas le droit de le faire de int à String.
Si tu veux passer de String à int:

String p = "10";
int dix = Integer.parseInt(p);

Si tu veux passer de int à String:
int dix = 10;
String p = String.format("%d", dix);
Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

18

kilian, le 20 jan 2009 à 00:41:36
  • +1

Les cast sont en fait autorisés entre objet papa/fiston (ou maman/fifille).
Prenons un exemple que j'aime bien: le médecin et le pédiatre.

Un pédiatre est un médecin, mais un médecin n'est pas necessairement un pédiatre:

class Medecin {
    //Gnagnagna, bon on va pas se taper l'implémentation de 8 ans de médecine
}

class Pediatre extends Medecin { //Pediatre hérite de médecin, eh oui un pediatre est un medecin specialisé
    //Bidibadabloupbloup, encore moins pour les 12 ans de pédiatrie
}

//....plus tard dans le code

Medecin m = new Pediatre(); //Un pédiatre est un médecin, rappelle toi
Pediatre p = (Pediatre) m; //Tu as le droit ce médecin en question en question est bien un pédiatre

Pediatre p2 = new Medecin(); //Houlaaa, interdit!! N'importe quel médecin ne peut pas se considérer comme pédiatre

Medecin m = new Psychiatre(); //Un psychiatre est un médecin, ça marche
Pediatre p3 = (Pediatre)m; //Pas bieeeen, un psychiatre n'est pas pédiatre, à moins qu'il soit pédospychiatre mais bon, ne compliquons pas les choses....

Voilà les casts peuvent se faire dans ce genre de condition. Mais les int et les String ne peuvent pas se caster entre eux, il ne sont pas de la même famille. Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

20

titfofol, le 20 jan 2009 à 00:50:31

Oui oui, je comprend tout à fait ce que tu veux dire, mais pourquoi à près tu as donné une formule pour pouvoir passer d'int en String?!

Répondre à titfofol

21

kilian, le 20 jan 2009 à 00:51:30

Ben ça pourra te servir pour plus tard ;-) Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

17

titfofol, le 20 jan 2009 à 00:37:30

Bon alors atttend


voila ma class LectureFichier (qui me met une erreur au niveau --> Traitement(Chaine);

package pf.cps.datasemp;

import java.io.*;
import java.util.ArrayList;
import pf.cps.datasemp.TraitementFichier;

public class LectureFichier {
	public static void main(String[] args) {
		//Initialise les variables Chaine et Fichier
		ArrayList Chaine = new ArrayList();
		String Fichier = "T00.ISO";

		//lecture du fichier texte
		try{
		//Ouvre le fichier T00.ISO
		InputStream Ips = new FileInputStream(Fichier);
		//Lit le fichier en séquence
		InputStreamReader Ipsr = new InputStreamReader(Ips);
		BufferedReader Br = new BufferedReader(Ipsr);
		String Ligne;
		while ((Ligne = Br.readLine()) != null){
			System.out.println(Ligne);
			//Chaine += Ligne + "\n";
			Chaine.add(Ligne);

		}
		Traitement(Chaine);
		Br.close();
		}
		catch (Exception e){
			System.out.println(e.toString());
		}
	}
}




puis ma class TraitementFichier :
package pf.cps.datasemp;

import java.util.*;

public class TraitementFichier {
	public static void main(String[] args) {

	}

	public static void Traitement(ArrayList TouteLigne){
		for (int i = 1; i < TouteLigne.size(); i ++){
			String Ligne = TouteLigne[i];
			StringTokenizer Mot = new StringTokenizer(Ligne,"|");
			ArrayList Liste = new ArrayList();
			while(Mot.hasMoreTokens()){
				Liste.add(Mot.nextToken());
				//System.out.println(Mot.nextToken());
			}
		}
	}
}

Répondre à titfofol

19

kilian, le 20 jan 2009 à 00:49:44

Effectivement le readline() des classes de type Reader retournent des chaines.
Donc c'est bon:

public static void Traitement(ArrayList TouteLigne){
		for (int i = 0; i < TouteLigne.size(); i ++){
			String Ligne = (String)TouteLigne.get(i);
			StringTokenizer Mot = new StringTokenizer(Ligne,"|");
			ArrayList Liste = new ArrayList();
			while(Mot.hasMoreTokens()){
				Liste.add(Mot.nextToken());
				//System.out.println(Mot.nextToken());
			}
		}
	}

J'ai mis en gras les lignes changées, pas grand chose. (oublie pas ma petite leçon de médecine au dessus).
Par contre j'ai pas compris le coup du tokenizer...
Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

22

titfofol, le 20 jan 2009 à 00:56:53

Waw SUPER!!!

Mais pourquoi tu as fais démarer à 0 et non à 1?


et l'erreur dans ma classe LectureFichier y est toujours...

Traitement(Chaine);

l'erreur est : The method Traitement(ArrayList) is undefined for the type LectureFichier

pourquoi? il dit que je n'ai pas déclarer la classe pour la methode Traitement??? Et pourtant si :
import pf.cps.datasemp.TraitementFichier;

Répondre à titfofol

23

kilian, le 20 jan 2009 à 01:03:38

Tu l'as importé certes, ce qui signifie que cette classe est à portée, accessible.
Mais tu n'y accèdes pas.

En faisant Traitement(TouteLigne), java va chercher une méthode dans la classe courante (LectureFichier) qui s'appelle Traitement.
Or y'en a pas.

Traitement est une méthode de la classe traitementFichier:

package pf.cps.datasemp;

import java.io.*;
import java.util.ArrayList;
import pf.cps.datasemp.TraitementFichier;

public class LectureFichier {
	public static void main(String[] args) {
		//Initialise les variables Chaine et Fichier
		ArrayList Chaine = new ArrayList();
		String Fichier = "T00.ISO";

		//lecture du fichier texte
		try{
		//Ouvre le fichier T00.ISO
		InputStream Ips = new FileInputStream(Fichier);
		//Lit le fichier en séquence
		InputStreamReader Ipsr = new InputStreamReader(Ips);
		BufferedReader Br = new BufferedReader(Ipsr);
		String Ligne;
		while ((Ligne = Br.readLine()) != null){
			System.out.println(Ligne);
			//Chaine += Ligne + "\n";
			Chaine.add(Ligne);

		}
		TraitementFichier.Traitement(Chaine);
		Br.close();
		}
		catch (Exception e){
			System.out.println(e.toString());
		}
	}
}
Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

24

titfofol, le 20 jan 2009 à 01:06:58

MERCI, MERCI, MERCI BEAUCOUP!!!! (je sais que je flood mais bon, je suis trop contente... tu as réussit à débloquer mon bout de programme merci encore Kilian

Passe une bonne nuit ou une bonne journée

Cordialement

Titfofol

PS : ton exemple avec les médecins trop top

Répondre à titfofol

25

kilian, le 20 jan 2009 à 01:08:56

Mais ce fût un plaisir :-) Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

26

loupius, le 20 jan 2009 à 01:40:44
  • +1

Quel feuilleton, j'ai cru qu'on en finirait jamais; ce fût palpitant et quel bilan !
- 25 échanges en 2 heures
- un échange courtois,
- un heureux happy end.
Je n'ai qu'une chose à dire: messieurs, chapeau bas !
Bonne nuit à tous.

Répondre à loupius

27

kilian, le 20 jan 2009 à 01:50:06

:-) Ce message ne mange ni trop gras, ni trop salé, ni trop
sucré .Pour sa santé il bouge plus et mange 5 fruits et 
légumes par jour.

Répondre à kilian

28

 titfofol, le 20 jan 2009 à 17:40:05

Et oui, ce fut court, claire et conçit et tout cela grâce... à Kilian ;;) un post parfait quoi...

Cordialement

Titfofol

Répondre à titfofol
Collection CommentÇaMarche.net