Collection est l'interface de collection la plus basique. Une collection représente un ensemble d'objets, c'est-à-dire que les éléments de la collection Map fournissent la clé du mappage des valeurs
La différence entre ArrayList et Vector, la différence entre HashMap et Hashtable
Réponse : ArrayList et Vector Principalement sous deux aspects.
1. Synchronicité : Vector est thread-safe, ce qui signifie qu'il est synchrone, tandis qu'ArrayList est thread-safe et non synchrone
2. Croissance des données : lorsqu'une croissance est nécessaire, Vector La croissance par défaut est un niveau, tandis qu'ArrayList est la moitié de la taille d'origine
HashMap et HashTable sont principalement sous trois aspects.
1. Raisons historiques : Hashtable est basé sur l'ancienne classe Dictionary et HashMap est une implémentation de l'interface Map introduite dans Java 1.2
2. Synchronicité : Hashtable est thread-safe, ce qui signifie qu'elle est synchrone, tandis que HashMap est un thread programme Dangereux, non synchronisé
3. Valeur : seul HashMap vous permet d'utiliser une valeur nulle comme clé ou valeur d'une entrée de table
Les performances de stockage et les caractéristiques d'ArrayList, Vector et LinkedList
ArrayList et Vector utilisent tous deux des tableaux Store. données. Le nombre d'éléments dans ce tableau est plus grand que les données réellement stockées afin que les éléments puissent être ajoutés et insérés. Ils permettent tous d'indexer les éléments directement par numéro de série. Cependant, l'insertion d'éléments implique des opérations de mémoire telles que le déplacement d'éléments du tableau. donc l'indexation des données est rapide mais l'insertion des données est lente. Parce que Vector La méthode synchronisée (sécurité des threads) est utilisée, ce qui est généralement moins performant que ArrayList utilise une liste chaînée bidirectionnelle pour le stockage. L'indexation des données par numéro de série nécessite un transfert. ou parcours vers l'arrière, mais lors de l'insertion de données, seuls les éléments avant et après cet élément doivent être enregistrés Oui, donc la vitesse d'insertion est plus rapide.
8 Concevez 4 fils, dont deux augmentent j de 1 à chaque fois, et les deux autres fils diminuent j de 1 à chaque fois. Écrivez le programme.
Le programme suivant utilise des classes internes pour implémenter les threads et ne prend pas en compte l'ordre lors de l'augmentation ou de la diminution de j.
public class ThreadTest1{
private int j;
public static void main(String args[]){
ThreadTest1 tt=new ThreadTest1();
Inc inc=tt.new Inc();
Dec dec=tt.new Dec ();
for(int i=0;i<2;i++){
Thread t=new Thread(inc);
t.start();
t=new Thread(dec);
t.start() ;
}
}
private synchronisé void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
private synchronisé void dec( ){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implémente Runnable{
public void run(){
for(int i=0;i<100;i++){
inc();
}
}
}
class Dec implémente Runnable{
public void run(){
for(int i=0;i<100; i++){
dec();
}
}
}
}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!