Rumah Java javaTutorial Java中ListIterator和Iterator详解与辨析

Java中ListIterator和Iterator详解与辨析

Dec 13, 2016 pm 05:20 PM
iterator

在使用java集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置,如下图所示:

1.png

这里假设集合List由四个元素List1、List2、List3和List4组成,当使用语句Iterator it = List.Iterator()时,迭代器it指向的位置是上图中Iterator1指向的位置,当执行语句it.next()之后,迭代器指向的位置后移到上图Iterator2所指向的位置。

首先看一下Iterator和ListIterator迭代器的方法有哪些。

Iterator迭代器包含的方法有:

hasNext():如果迭代器指向位置后面还有元素,则返回 true,否则返回false

next():返回集合中Iterator指向位置后面的元素

remove():删除集合中Iterator指向位置后面的元素

ListIterator迭代器包含的方法有:

add(E e): 将指定的元素插入列表,插入位置为迭代器当前位置之前

hasNext():以正向遍历列表时,如果列表迭代器后面还有元素,则返回 true,否则返回false

hasPrevious():如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回false

next():返回列表中ListIterator指向位置后面的元素

nextIndex():返回列表中ListIterator所需位置后面元素的索引

previous():返回列表中ListIterator指向位置前面的元素

previousIndex():返回列表中ListIterator所需位置前面元素的索引

remove():从列表中删除next()或previous()返回的最后一个元素(有点拗口,意思就是对迭代器使用hasNext()方法时,删除ListIterator指向位置后面的元素;当对迭代器使用hasPrevious()方法时,删除ListIterator指向位置前面的元素)

set(E e):从列表中将next()或previous()返回的最后一个元素返回的最后一个元素更改为指定元素e

一.相同点

都是迭代器,当需要对集合中元素进行遍历不需要干涉其遍历过程时,这两种迭代器都可以使用。

二.不同点

1.使用范围不同,Iterator可以应用于所有的集合,Set、List和Map和这些集合的子类型。而ListIterator只能用于List及其子类型。

2.ListIterator有add方法,可以向List中添加对象,而Iterator不能。

3.ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator不可以。

4.ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

5.都可实现删除操作,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。

三:Iterator和ListIterator用法示例

ListIterator用法:

package com.collection;

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorTest {
 public static void main(String[] args) {  // TODO Auto-generated method stub  List<String> staff = new LinkedList<>();  staff.add("zhuwei");  staff.add("xuezhangbin");  staff.add("taozhiwei");  ListIterator<String> iter = staff.listIterator();  String first = iter.next();    //删除zhuwei  iter.remove();    //把zhuwei改为simei  //iter.set("simei");  System.out.println("first:"+first);    iter.add("xiaobai");    //遍历List元素  System.out.println("遍历List中元素,方法一:");  for(String str : staff)   System.out.println(str+"  ");    iter = staff.listIterator();  System.out.println("遍历List中元素,方法二:");  while(iter.hasNext())  {   System.out.println(iter.next());  } }
}
Salin selepas log masuk


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Java Iterator lwn. Iterable: Menyahmistifikasikan Dunia Iterator dan Objek Boleh Lelar Java Iterator lwn. Iterable: Menyahmistifikasikan Dunia Iterator dan Objek Boleh Lelar Feb 19, 2024 pm 02:15 PM

Dalam pengaturcaraan Java, antara muka Iterator dan Iterable ialah alat penting untuk memproses elemen dalam koleksi. Antara muka Iterator menyediakan kaedah untuk capaian berulang kepada elemen koleksi, manakala antara muka Iterable mentakrifkan kebolehubahan koleksi supaya elemen dalam koleksi boleh diakses melalui Iterator. Kerjasama erat antara kedua-duanya memberikan kita kaedah umum untuk melintasi elemen koleksi. Antara muka Iterator Antara muka Iterator mentakrifkan kaedah berikut: booleanhasNext(): Semak sama ada masih terdapat unsur dalam koleksi. Enext(): Mengembalikan elemen seterusnya dalam koleksi. voidremove(): Alih keluar elemen semasa. Boleh diulang

Java Iterator vs. Iterable: Satu langkah untuk menulis kod elegan Java Iterator vs. Iterable: Satu langkah untuk menulis kod elegan Feb 19, 2024 pm 02:54 PM

Antara muka Iterator Antara muka Iterator ialah antara muka yang digunakan untuk melintasi koleksi. Ia menyediakan beberapa kaedah, termasuk hasNext(), next() dan remove(). Kaedah hasNext() mengembalikan nilai Boolean yang menunjukkan sama ada terdapat elemen seterusnya dalam koleksi. Kaedah next() mengembalikan elemen seterusnya dalam koleksi dan mengeluarkannya daripada koleksi. Kaedah remove() mengalih keluar elemen semasa daripada koleksi. Contoh kod berikut menunjukkan cara menggunakan antara muka Iterator untuk mengulang koleksi: Listnames=Arrays.asList("John","Mary","Bob");Iterator

Perbandingan Mendalam Java Iterator dan Iterable: Analisis Kebaikan dan Keburukan Perbandingan Mendalam Java Iterator dan Iterable: Analisis Kebaikan dan Keburukan Feb 19, 2024 pm 04:20 PM

Perbezaan konsep: Iterator: Iterator ialah antara muka yang mewakili iterator yang memperoleh nilai daripada koleksi. Ia menyediakan kaedah seperti MoveNext(), Current() dan Reset(), membolehkan anda melintasi elemen dalam koleksi dan beroperasi pada elemen semasa. Boleh lelar: Boleh lelar juga ialah antara muka, mewakili objek boleh lelar. Ia menyediakan kaedah Iterator(), yang mengembalikan objek Iterator untuk memudahkan melintasi elemen dalam koleksi. Penggunaan: Iterator: Untuk menggunakan Iterator, anda perlu mendapatkan objek Iterator dahulu, dan kemudian panggil kaedah MoveNext() untuk beralih ke yang seterusnya

Java Iterator dan Iterable: Kunci kepada traversal koleksi, dinyahmistifikasikan Java Iterator dan Iterable: Kunci kepada traversal koleksi, dinyahmistifikasikan Feb 20, 2024 am 10:27 AM

Pengenalan kepada IteratorIterator ialah antara muka dalam Java untuk merentasi koleksi. Ia menyediakan satu set kaedah yang membolehkan anda mengakses elemen dalam koleksi secara berurutan. Anda boleh menggunakan Iterator untuk mengulangi jenis koleksi seperti Senarai, Set dan Peta. Kod demo: Listlist=newArrayList();list.add("one");list.add("dua");list.add("tiga");Iteratoriterator=list.iterator();while(iter

Java Iterator lwn. Iterable: Membuka Kunci Kuasa Koleksi Java Java Iterator lwn. Iterable: Membuka Kunci Kuasa Koleksi Java Feb 19, 2024 pm 07:00 PM

Di Java, koleksi ialah koleksi elemen yang menyediakan antara muka bersatu dan kaedah untuk menyimpan, mendapatkan dan mengendalikan elemen ini. Iterator dan Iterable ialah dua antara muka Java penting yang menyediakan mekanisme biasa untuk merentasi elemen koleksi. Antara muka Iterator mentakrifkan kaedah hasNext() dan next() untuk merentasi koleksi. Kaedah hasNext() digunakan untuk menyemak sama ada terdapat sebarang elemen yang tidak dilalui dalam koleksi, dan kaedah next() digunakan untuk mengembalikan elemen semasa dan mengalihkannya ke elemen seterusnya. Antara muka Iterable mentakrifkan kaedah iterator(), yang mengembalikan objek Iterator untuk merentasi elemen dalam koleksi.

Java Iterator and Iterable: Analisis mendalam tentang mekanisme traversal koleksi Java Java Iterator and Iterable: Analisis mendalam tentang mekanisme traversal koleksi Java Feb 19, 2024 pm 08:36 PM

Antara muka Iterator Antara muka Iterator ialah antara muka peringkat rendah dalam rangka kerja koleksi Java untuk merentasi koleksi. Ia mentakrifkan dua kaedah utama: hasNext(): menyemak jika terdapat lebih banyak elemen dalam koleksi. next(): Mengembalikan elemen seterusnya dalam koleksi. Antara muka Iterator juga mentakrifkan beberapa kaedah pilihan, seperti kaedah remove(), yang digunakan untuk mengalih keluar elemen semasa daripada koleksi. Menggunakan antara muka Iterator Anda boleh menggunakan antara muka Iterator untuk melintasi koleksi menggunakan langkah berikut: Dapatkan objek Iterator koleksi. Gunakan kaedah hasNext() untuk menyemak sama ada terdapat lebih banyak elemen dalam koleksi. Jika terdapat lebih banyak elemen, gunakan kaedah next() untuk mendapatkan elemen seterusnya

Java Iterator dan Iterable: Di Sebalik Tabir Collection Traversal Java Iterator dan Iterable: Di Sebalik Tabir Collection Traversal Feb 19, 2024 pm 04:15 PM

Iterator (Iterator) dan objek Iterable (Iterable) ialah dua antara muka yang sangat penting dalam rangka kerja koleksi Java. Ia membolehkan anda mengulangi elemen dalam koleksi tanpa mengetahui pelaksanaan khusus koleksi. Antara muka Iterator mentakrifkan kaedah untuk merentasi koleksi, termasuk hasNext() dan next(). Kaedah hasNext() menyemak sama ada terdapat lebih banyak elemen dalam koleksi, manakala kaedah next() mengembalikan elemen seterusnya dalam koleksi. Antara muka Iterable mentakrifkan kaedah untuk mencipta Iterator, kaedah iterator(). Kaedah ini mengembalikan objek Iterator yang boleh digunakan untuk mengulang koleksi. Berikut adalah menggunakan Itera

Tafsiran dokumentasi Java: Penjelasan terperinci tentang penggunaan kaedah iterator() kelas HashSet Tafsiran dokumentasi Java: Penjelasan terperinci tentang penggunaan kaedah iterator() kelas HashSet Nov 03, 2023 am 09:44 AM

Tafsiran dokumentasi Java: Penjelasan terperinci tentang penggunaan kaedah iterator() kelas HashSet Contoh kod khusus diperlukan Dalam pengaturcaraan Java, HashSet ialah salah satu kelas koleksi yang biasa digunakan dan mewarisi daripada AbstractSet kelas. Kaedah iterator() kelas HashSet digunakan untuk mengembalikan objek iterator untuk melintasi elemen dalam HashSet. Artikel ini akan menerangkan secara terperinci penggunaan kaedah iterator() kelas HashSet, dan

See all articles