java集合(七)---List接口和ListIterator接口 && ListIterator接口和Iterator接口

一、List接口:

List作为Collection接口的子接口,可以使用Collection接口中的全部方法,而且由于List是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法。

其方法简单来说如下
在这里插入图片描述
注:以上方法是List集合里增加的一些根据索引来操作集合元素的方法,还有一些别的方法没有放到这里,具体还需查看API文档。

对于List需要注意的几个点:

  • List判断两个对象相等只要通过equals()方法比较返回true即可。
  • List集合可以根据位置索引来访问集合中的元素,所以List增加了一种新的遍历集合元素的方法:使用普通的for循环来遍历集合元素。
  • 对于两个默认的方法:sort()和replaceAll()方法。,可以分别使用Lambda表达式指定的排序规则(:字符串长度越长,字符串越大;)和Lambda表达式指定了替换集合元素的规则(:直接用集合元素(字符串)的长度作为新的集合元素)。

二、ListIterator接口:

List提供一个listIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法。
在这里插入图片描述
如下:


package java.util;

public interface ListIterator<E> extends Iterator<E> {
    // Query Operations
    boolean hasNext();

    E next();

    boolean hasPrevious();

    E previous();

    int nextIndex();

    int previousIndex();

    // Modification Operations

    void remove();

    void set(E e);

    void add(E e);
}

ListIterator是一个更加强大的Iterator子接口,它只能用于各种List接口的子类访问。因为ListIterator没有实现类,只有List接口中有一个返回值类型为ListIterator的listIterator()方法。而AbstractList作为List的直接子类,实现了listIterator()方法。

三、Iterator接口和ListIterator接口的主要区别

ListIterator与普通的Iterator进行对比,不难发现:

  • ListIterator集合增加了向前迭代的功能(Iterator只能向后迭代)
  • ListIterator还可以通过add()方法向List集合中添加元素(Iterator只能删除元素)。
  • ListIterator可以使用set()方法替换他访问过的最后一个元素。但是Iterator只能遍历集合,不能修改集合
  • 示例代码:
public class ListIteratorTest{
	public static void main(String[] args) {
		String[] books = {
		"疯狂java讲义", "疯狂ios讲义", "轻量级java EE企业应用实战"};
		List bookList = new ArrayList();
		for(int i = 0; i < books.length; i++) {
			booksList.add(books[i]);
        }
        ListIterator lit = bookList.listIterator();
        while(lit.hasNext()) {
        System.out.println(lit.next());
        lit.add("-----分隔符-----");
        }
        System.out.println("=====下面开始反向迭代=====");
        while(lit.hasPrevious()) {
        	System.out.println(lit.previous());
        }
       }
}

运行结果如下:

疯狂java讲义
疯狂ios讲义
轻量级java EE企业应用实战
=====下面开始反向迭代=====
-----分隔符-----
轻量级java EE企业应用实战
-----分隔符-----
疯狂ios讲义
-----分隔符-----
疯狂java讲义

参考:
感谢:https://blog.csdn.net/xiaojie_570/article/details/79291406

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值