Maison >Java >javaDidacticiel >Comment définir et implémenter ArrayList et la liste de séquences en Java
La table linéaire est la structure de données la plus basique, la plus simple et la plus couramment utilisée. Une séquence finie, qui contient n éléments de données présentant les mêmes caractéristiques, est appelée liste linéaire et constitue un type de structure de données.
Listes linéaires courantes : listes séquentielles, listes chaînées, piles, files d'attente...
Les listes linéaires sont des structures logiquement linéaires, c'est-à-dire qu'elles constituent une ligne droite continue. La forme de stockage physique des tableaux linéaires est généralement une structure de tableau ou de liste chaînée, mais elle n'est pas nécessairement continue.
Il ne doit y avoir qu'un seul "premier élément" dans l'ensemble.
Il ne doit y avoir qu'un seul "dernier élément" dans l'ensemble.
À l'exception du dernier élément, tous les éléments ont un successeur unique (conséquent).
À l'exception du premier élément, tous les éléments ont un précurseur (antécédent) unique.
Une structure linéaire généralement stockée sous la forme d'un tableau est appelée table de séquence, qui stocke des éléments de données en séquence dans une unité de stockage avec des adresses physiques continues. Terminez l'ajout, la suppression, la vérification et la modification des données sur la baie.
Nous devons d'abord créer un tableau pour stocker les données.
Remarque : Parce que j'ai d'abord créé le tableau d'entiers pour plus de commodité, afin de mieux s'adapter aux différents types, vous pouvez créer un tableau générique, que je n'écrirai pas ici.
L'étape suivante consiste à effectuer diverses opérations sur la table de séquence. Par exemple : CURD de base, impression de la table de séquence, obtention de la longueur de la table de séquence, effacement de la table de séquence, etc.
Parce qu'il s'agit d'un tableau, il suffit donc de parcourir le tableau et de l'imprimer directement
Lors de l'ajout d'éléments, il est nécessaire de déterminer si le tableau est plein, nous devons donc faites un jugement. Si l'espace du tableau est plein et doit être étendu. De plus, nous devons également déterminer si cette position de pos est légale.
Comment juger si l'espace est plein
Ici, nous simplifions le code comme suit :
Si vous souhaitez augmenter la capacité, une fois l'expansion terminée, car la table de séquence est une structure continue, ajoutez des éléments à la position pos, puis les éléments après la position pos seront reculés un par un. Ce n'est qu'ainsi que de nouveaux éléments pourront être ajoutés.
Remarque : Après l'expansion, nous devons modifier la taille de CAPACITY et usedSize.
Ici, nous devons déterminer si le tableau est vide à ce moment-là.
Après cela, nous parcourons toujours directement le tableau.
nécessite également une opération nulle ici.
Il peut y avoir des situations où le tableau est vide et la position est illégale, un jugement est donc nécessaire.
Je lance des exceptions manuellement ici, je n'ai rien écrit d'autre.
Pour supprimer un élément à une certaine position, l'élément derrière lui peut directement l'écraser pour obtenir la suppression.
Les opérations suivantes sont relativement simples et ne seront pas décrites en détail.
Dans le framework de collection, ArrayList est une classe ordinaire qui implémente l'interface List Le schéma de framework spécifique est le suivant : # ° interface. Indique qu'ArrayList prend en charge l'accès aléatoire.
ArrayList implémente l'interface Cloneable, indiquant qu'ArrayList peut être cloné.ArrayList implémente l'interface Serialisable, indiquant qu'ArrayList prend en charge la sérialisation.
public static void main(String[] args) { // ArrayList创建,推荐写法 // 构造一个空的列表 List<Integer> list1 = new ArrayList<>(); // 构造一个具有10个容量的列表 List<Integer> list2 = new ArrayList<>(10); list2.add(1); list2.add(2); list2.add(3); // list2.add("hello"); // 编译失败,List<Integer>已经限定了,list2中只能存储整形元素 // list3构造好之后,与list中的元素一致 ArrayList<Integer> list3 = new ArrayList<>(list2); // 避免省略类型,否则:任意类型的元素都可以存放,使用时将是一场灾难 List list4 = new ArrayList(); list4.add("111"); list4.add(100); }
method
void add(int index, E element) | Insérer e dans la position de l'index |
boolean addAll(Collection< ;? étend E> c) | Insérez la queue des éléments de l'ensemble c dans l'ensemble |
E delete(int index)# 🎜🎜# | Supprimez l'élément de position d'index et retournez|
Supprimez le premier rencontré o | |
Obtenir l'élément de position de l'index d'indice | |
Définissez l'élément de position de l'index d'indice sur element | |
boolean contain(Object o) | |
int indexOf(Object o) | |
#🎜🎜 #int lastIndexOf(Object o) | Renvoyer l'indice du dernier o |
ListIntercepter une partie de la liste | |
ArrayList traversal | |
foreach traversal | |
iterator | System.out.println("======迭代器1========="); ElementObservableListDecorator<Object> list; Iterator<String> it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } System.out.println("======迭代器2========="); ListIterator<String> it2 = list.listIterator(); while (it2.hasNext()) { System.out.println(it2.next()); } | # 🎜 🎜#La différence entre une table de séquence et un tableau :
Donc, un tableau est en fait une liste de séquences incomplète.
Notes dans le tableau de séquence : Il faut distinguer deux concepts dans le tableau de séquence : Capacité (capacité) et nombre d'éléments (taille).La capacité peut être comprise comme la taille (longueur) du tableau, et le nombre d'éléments est le nombre d'éléments valides enregistrés en taille. Dans la table de séquence, le stockage des données doit être continu et il ne peut pas y avoir d'"espaces" entre les éléments lorsque des opérations telles que l'insertion et la suppression sont effectuées. l'opération Une fois terminée, la continuité de la table de séquence doit également être assurée.
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!