Java >> Tutoriel Java >  >> Java

Comparez Array et Collection en Java

Différence entre Array et Collections en Java

Tableaux :

1) Les tableaux ont une taille fixe (c'est-à-dire que nous ne pouvons pas augmenter ou diminuer la taille lors de l'exécution).

Exemple

class ArrayClass
{
	public static void main(String[] args){
		int[] a = new int[10];
		System.out.println(a[0]);
	}
}

Sortie (Description)

La mémoire est créée pour 10 éléments et tous les éléments initialement initialisés avec 0 (c'est-à-dire un nouvel objet créé par mot-clé) et a[0] signifie l'impression de la première valeur d'élément, c'est-à-dire 0.

E:\javasource>java ArrayClass
0 

2) Dans le cas d'un point de vue mémoire, il n'est pas recommandé d'utiliser le concept de tableaux (c'est-à-dire que la taille des tableaux est fixe si nous utilisons de la mémoire pour des éléments inférieurs à la taille des tableaux, de sorte que la mémoire sera gaspillée).

3) En cas de performances, il est recommandé d'utiliser le concept de tableaux (c'est-à-dire que nous connaissons la taille des tableaux à l'avance ou au moment de la compilation, donc pas de surcharge à l'exécution, c'est pourquoi cela prend moins de temps).

4) Les tableaux peuvent contenir des éléments de données homogènes (c'est-à-dire que les éléments du tableau sont du même type).

Exemple

class ArrayClass
{
	public static void main(String[] args){
		int[] a = new int[10];
		a[0]	= new boolean[10];
		System.out.println(a[0]);
	}
}

Sortie (Description)

a est un tableau de type int[], il ne peut donc contenir que des éléments int[] mais ce que nous faisons ici a[0] =new boolean[10] signifie attribuer une valeur booléenne dans un tableau de type int afin que nous obtenions une erreur de compilation si nous écrire a[0]=new int[10] au lieu de a[0]=new boolean[10] alors pas d'erreur .

E:\javasource>javac ArrayClass.java
ArrayClass.java:8: incompatible types
found   : boolean[]
required: int
                        a[0]    = new boolean[10];
                                  ^
1 error

5) Les tableaux ne fournissent pas de support de méthode prêt à l'emploi, c'est pourquoi nous pouvons appeler car les tableaux ne sont pas une structure de données sous-jacente.

6) Les tableaux sont capables de contenir à la fois des primitives (byte, short, int, long etc.) et des objets (classes wrapper, string, stringbuffer ou n'importe quelle classe définie par l'utilisateur).

Exemple 1 :Pour le type d'objet

class ArrayClass
{
	public static void main(String[] args){
		Integer[] a = new Integer[10];
		System.out.println(a[0]);
	}
}

Sortie (Description)

La mémoire est créée pour 10 éléments et tous les éléments initialement initialisés avec null (c'est-à-dire qu'un nouvel objet créé par mot-clé et un élément de type d'objet contient null par défaut s'il n'est pas défini) et a[0] signifie l'impression de la valeur du premier élément, c'est-à-dire null.

E:\javasource>java ArrayClass
null

Exemple 2 :Pour le type Primitives

class ArrayClass
{
	public static void main(String[] args){
		int[] a = new int[10];
		System.out.println(a[0]);
	}
}

Sortie (Description)

La mémoire est créée pour 10 éléments et tous les éléments initialement initialisés avec 0 (c'est-à-dire un nouvel objet créé par mot-clé) et a[0] signifie l'impression de la première valeur d'élément, c'est-à-dire 0.

E:\javasource>java ArrayClass
0 

Collectes :

1) Les collections sont de nature évolutive (c'est-à-dire que nous pouvons augmenter ou diminuer la taille au moment de l'exécution).

Exemple :

import java.util.*;

class CollectionsClass
{
	public static void main(String[] args){
		ArrayList al = new ArrayList(2);
		al.add(10);
		al.add(20);
		System.out.println(al);
		al.add(30);
		System.out.println(al);
	}
}

Sortie (Description)

Initialement, la taille de ArrayList est de 2, puis 2 éléments seront ajoutés, puis le troisième élément est venu, donc une nouvelle ArrayList sera créée, donc nouvelle capacité =capacité actuelle * 3/2 + 1

E:\javasource>java CollectionsClass
[10, 20]
[10, 20, 30]

2) En cas de point de vue mémoire, il est recommandé d'utiliser le concept de collections (c'est-à-dire que la taille des collections n'est pas fixe, la mémoire sera allouée en fonction de la taille des éléments des collections).

3) En cas de performances, il n'est pas recommandé d'utiliser le concept de collections (c'est-à-dire que nous ne connaissons pas la taille des collections à l'avance ou au moment de la compilation, supposons qu'au départ, la mémoire est allouée pour 10 éléments Comme le 11ème élément, une nouvelle mémoire sera allouée et tous les éléments seront copiés dans la nouvelle mémoire).

4) Les collections peuvent contenir des éléments de données homogènes et hétérogènes (c'est-à-dire que les éléments des collections peuvent être de types différents).

Exemple :

import java.util.*;

class CollectionsClass
{
	public static void main(String[] args){
		ArrayList al = new ArrayList(10);
		al.add("A");
		al.add("true");
		System.out.println(al);
	}
}

Sortie (Description)

ArrayList al object peut contenir à la fois des éléments homogènes et hétérogènes comme A est de type chaîne et true est de type booléen, les deux sont de type différent (hétérogène).

E:\javasource>java CollectionsClass
[10, true]

5) Les collections fournissent un support de méthode prêt à l'emploi, c'est pourquoi nous pouvons appeler car les collections sont la structure de données sous-jacente.

Exemple :

import java.util.*;

class CollectionsClass
{
	public static void main(String[] args){
		ArrayList al = new ArrayList(10);
		al.add("A");
		al.add("true");
		al.remove(1);
		System.out.println(al.size());
	}
}

Sortie (Description)

add(), remove(), size() etc. sont les méthodes prêtes à l'emploi .

E:\javasource>java CollectionsClass
1

6) Les collections sont capables de contenir uniquement le type d'objets (classes wrapper, chaîne, stringbuffer ou toute classe définie par l'utilisateur). Aucune fonctionnalité de ce type pour les primitives.


Balise Java