Maison base de données Redis Quelles sont les différences entre set et list dans Redis ?

Quelles sont les différences entre set et list dans Redis ?

Jun 29, 2019 pm 05:38 PM

Quelles sont les différences entre set et list dans Redis ?

La différence entre list et set :

1. Les interfaces List et Set héritent de l'interface Collection.

2. La plus grande différence est que List peut être répétée. Et Set ne peut pas être répété. (Remarque : bien que les éléments ne soient pas ordonnés, la position de l'élément dans l'ensemble est déterminée par le 3. HashCode de l'élément, et sa position est en fait fixe)

3. : Les interfaces LinkedList, ArrayList, Vector et Set ont deux classes d'implémentation : HashSet (la couche inférieure est implémentée par HashMap), LinkedHashSet

4. Cependant, l’efficacité de la récupération de nombres aléatoires est relativement faible.

5. L'ensemble convient au stockage, à l'insertion et à la suppression aléatoires fréquents. Mais l'efficacité est relativement faible lors de la traversée.

Set n'accepte chaque objet qu'une seule fois et utilise sa propre méthode de tri interne (généralement, vous vous souciez uniquement de savoir si un élément appartient à l'ensemble, pas son ordre - sinon vous devez utiliser une liste). Map enregistre également une copie de chaque élément, mais celle-ci est basée sur la "clé". Map a également un tri intégré, il ne se soucie donc pas de l'ordre dans lequel les éléments sont ajoutés. Si l'ordre d'ajout des éléments est important pour vous, vous devez utiliser LinkedHashSet ou LinkedHashMap.

Résumé : la liste a un ordre, une duplication et aucun tri, l'ensemble n'a ni duplication ni tri, et la clé de la carte est la même. actif. Si vous souhaitez insérer des éléments dans le même ordre que List, veuillez utiliser LinkedHashSet ou LinkedHashMap.

Méthodes fonctionnelles de List

Il existe en fait deux types de List : l'une est la ArrayList de base, dont l'avantage réside dans l'accès aléatoire aux éléments, et l'autre est la LinkedList, plus puissante, qui est n'est pas conçu pour un accès aléatoire rapide, mais dispose d'un ensemble de méthodes plus générales.

List : L'ordre est la fonctionnalité la plus importante de List : il garantit qu'un ordre spécifique des éléments est maintenu. List ajoute de nombreuses méthodes à Collection, permettant d'insérer et de supprimer des éléments du milieu de la liste (cela n'est recommandé que pour LinkedList.) Une liste peut générer un ListIterator, qui peut être utilisé pour parcourir la liste dans deux directions, et peut également être inséré et déplacé depuis le milieu de la liste Supprimer des éléments.

ArrayList : Liste implémentée par tableau. Permet un accès aléatoire rapide aux éléments, mais insère et supprime très lentement des éléments du milieu de la liste. ListIterator ne doit être utilisé que pour parcourir ArrayList d’arrière en avant, et non pour insérer et supprimer des éléments. Parce que c'est beaucoup plus cher que LinkedList.

LinkedList : l'accès séquentiel est optimisé et la surcharge liée à l'insertion et à la suppression au milieu de la liste n'est pas importante. L'accès aléatoire est relativement lent. (Utilisez plutôt ArrayList.) Possède également les méthodes suivantes : addFirst(), addLast(), getFirst(), getLast(), removeFirst() et removeLast(), qui (non définies dans aucune interface ou classe de base) permettent à LinkedList de pouvoir être utilisé comme pile, file d'attente et deque.

Par exemple :

Utilisation de ArrayList et Iterator

                List<Integer> list = new ArrayList<>();
		for (int i = 0; i < 10; i++) {
			list.add(i);
		}
		Iterator<Integer> iterator = list.iterator();
		while (iterator.hasNext()) {
			int i = iterator.next();
			System.out.println("iterator==" + i);
		}
		for(Integer i: list) {
			System.out.println("i=="+ i);
		}
                ListIterator<Integer> listIterator = list.listIterator();
		while (listIterator.hasNext()) {
			int  j = listIterator.next();
			System.err.println("listIterator==" + j);
		}
Copier après la connexion

Méthodes fonctionnelles de Set

Set : chaque élément stocké dans Set doit être unique car Set ne le fait pas enregistrer les éléments en double. Les éléments ajoutés au Set doivent définir la méthode equals() pour garantir l'unicité de l'objet. Set et Collection ont exactement la même interface. L'interface Set ne garantit pas que l'ordre des éléments soit conservé.

HashSet : ensemble conçu pour une recherche rapide. Les objets stockés dans HashSet doivent définir hashCode().

TreeSet : Un ensemble qui enregistre la commande. La couche inférieure est une structure arborescente. Utilisez-le pour extraire une séquence ordonnée d’un ensemble.

LinkedHashSet : a la vitesse de requête de HashSet et utilise en interne une liste chaînée pour maintenir l'ordre des éléments (l'ordre d'insertion). Ainsi, lorsque vous utilisez un itérateur pour parcourir l'ensemble, les résultats seront affichés dans l'ordre dans lequel les éléments ont été insérés.

Pour plus de connaissances sur Redis, veuillez visiter la colonne Tutoriel d'utilisation de Redis !

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment choisir une clé de fragment dans le cluster redis? Comment choisir une clé de fragment dans le cluster redis? Mar 17, 2025 pm 06:55 PM

L'article discute du choix des clés de fragment dans le cluster Redis, mettant l'accent sur leur impact sur les performances, l'évolutivité et la distribution des données. Les problèmes clés incluent d'assurer une distribution de données, une alignement sur les modèles d'accès et d'éviter les erreurs courantes L

Comment mettre en œuvre l'authentification et l'autorisation dans Redis? Comment mettre en œuvre l'authentification et l'autorisation dans Redis? Mar 17, 2025 pm 06:57 PM

L'article discute de la mise en œuvre de l'authentification et de l'autorisation dans Redis, en se concentrant sur l'activation de l'authentification, en utilisant les ACL et les meilleures pratiques pour sécuriser Redis. Il couvre également la gestion des autorisations et des outils des utilisateurs pour améliorer la sécurité Redis.

Comment utiliser Redis pour les files d'attente et le traitement des antécédents? Comment utiliser Redis pour les files d'attente et le traitement des antécédents? Mar 17, 2025 pm 06:51 PM

L'article discute de l'utilisation de Redis pour les files d'attente de travaux et le traitement des antécédents, la configuration de détail, la définition du travail et l'exécution. Il couvre les meilleures pratiques comme les opérations atomiques et la hiérarchisation des travaux, et explique comment Redis améliore l'efficacité du traitement.

Comment mettre en œuvre des stratégies d'invalidation du cache dans Redis? Comment mettre en œuvre des stratégies d'invalidation du cache dans Redis? Mar 17, 2025 pm 06:46 PM

L'article traite des stratégies de mise en œuvre et de gestion de l'invalidation du cache dans Redis, y compris l'expiration basée sur le temps, les méthodes axées sur les événements et le versioning. Il couvre également les meilleures pratiques pour l'expiration du cache et les outils pour la surveillance et l'automate

Comment surveiller les performances d'un cluster redis? Comment surveiller les performances d'un cluster redis? Mar 17, 2025 pm 06:56 PM

L'article traite de la surveillance des performances et de la santé du cluster Redis à l'aide d'outils comme Redis CLI, Redis Insight et des solutions tierces comme Datadog et Prometheus.

Comment utiliser Redis pour les messages pub / sous? Comment utiliser Redis pour les messages pub / sous? Mar 17, 2025 pm 06:48 PM

L'article explique comment utiliser Redis pour les messages pub / sous, couvrant la configuration, les meilleures pratiques, assurer la fiabilité des messages et la surveillance des performances.

Comment utiliser Redis pour la gestion des sessions dans les applications Web? Comment utiliser Redis pour la gestion des sessions dans les applications Web? Mar 17, 2025 pm 06:47 PM

L'article traite de l'utilisation de Redis pour la gestion des sessions dans les applications Web, de la configuration de détail, des avantages tels que l'évolutivité et les performances et les mesures de sécurité.

Comment assurer Redis contre les vulnérabilités communes? Comment assurer Redis contre les vulnérabilités communes? Mar 17, 2025 pm 06:57 PM

L'article traite de la sécurisation Redis contre les vulnérabilités, en se concentrant sur des mots de passe forts, une liaison réseau, une désactivation des commandes, l'authentification, le chiffrement, les mises à jour et la surveillance.

See all articles