1. LinkedList et ArrayList
-- |
LinkedList |
ArrayList |
Contact |
sont toutes deux des classes d'implémentation de List, toutes deux sous le package java.util |
principe d'implémentation |
via lié list Manipuler les données |
Manipuler les données via des tableaux |
Quand utiliser |
Modifier et vérifier |
Ajouter et supprimer |
2. Classe LinkedList personnalisée (liste chaînée unidirectionnelle)
1.
Classe LinkedList et ArrayList La classe est différente, elle ajoute, supprime, modifie et vérifie la liste chaînée grâce au fonctionnement de pointeurs et de nœuds
Étapes pour personnaliser la classe LinkedList
1 Créez une classe de nœuds, dont les attributs sont des nœuds de nœuds. de type Node et données de type Object
2. Créez des constructeurs paramétrés et sans paramètre de la classe de nœud
3 Créez votre propre classe LinkedList pour implémenter l'interface List
4 Créez un nouvel objet nœud dans la classe LinkedList et déclarez. une taille pour représenter les éléments de la collection
5. Implémentez les méthodes size(), get(), isEmpty() (similaire à ArrayList)
6. Écrivez une méthode add() avec un paramètre formel
7. une méthode add() avec deux paramètres formels
8. Créez une classe de test pour tester le code
2 Classe de nœud Node
Il contient deux attributs : node et data
Le type de nœud est Node
. Le type de données est Objet (car il ne peut pas déterminer le type spécifique de données transmis)
package MyLinkedList;
public class Node {
// 定义数据
Object data;
// 定义下一结点
Node next;
public Node(Object data, Node next) {
this.data = data;
this.next = next;
}
public Node() {
}
}
Copier après la connexion
3, size(), isEmpty(), get(int index)
size() méthode
@Override
public int size() {
return size;
}
Copier après la connexion
isEmpty () méthode
@Override
public boolean isEmpty() {
return size == 0;
}
Copier après la connexion
get(int index) méthode
@Override
public Object get(int index) {
Node p = node;
for (int i = 0; i < index; i++) {
p = p.next;
}
return p.data;
}
Copier après la connexion
4 add(Object o)
insérer les données reçues à la fin
@Override
public boolean add(Object o) {
add(size, o);
return true;
}
Copier après la connexion
5. 6. test class
loop La raison pour laquelle on commence à partir de 1 : Parce qu'un objet est créé au début dans la classe LinkedList, si vous partez de 0, vous verrez que le résultat imprimé est nul
@Override
public void add(int index, Object element) {
// 找到需要插入的位置的结点
Node p = node;
for (int i = 0; i < index; i++) {
p = p.next;
}
// 创建新结点
Node node1 = new Node();
// 将数据存入集合中
node1.data = element;
// 让node1的指针指向下一结点
node1.next = p.next;
// 确定node1的直接前驱结点
p.next = node1;
// 更新size
size++;
}
Copier après la connexion
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!