2021-04-18 11:19  阅读(97)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-collections-traversing.html

Java集合教程 - Java列表

列表是对象的有序集合,在List界面中定义。List 接口表示集合框架中的列表。

列表可以具有重复的元素。并且我们可以在列表中存储多个空值。

List接口继承了集合接口和它添加了一些方法来支持使用索引访问其元素。

我们可以在List或的末尾添加一个元素在由整数索引标识的任何位置。

列表中元素的索引是从零开始的。

我们可以使用以下方法使用索引添加,获取,删除和替换其元素。

    its add(int index, E  element), 
    addAll(int  index, Collection<? extends E> c), 
    get(int index), 
    remove(int index) 
    set(int  index, E  element) 
    

我们可以搜索元素的位置List使用indexOf(Object o)或lastIndexOf(Object o)方法。

indexOf()方法搜索指定的对象从开始,它返回索引的对象的第一次出现。

lastIndexOf()方法从列表的末尾搜索元素。两个方法都返回-1如果List不包含指定的对象。

subList(int fromIndex,int toIndex)返回一个子列表的原始列表从索引fromIndex(包括)到索引toIndex(独占)。

ListIteratorList接口可以返回在向前和向后方向上遍历其元素。

List APIs

ArrayList和LinkedList

以下是实现List接口的两个类:

  • ArrayList
  • LinkedList

ArrayList由数组备份。链接列表由链接列表备份。

如果我们频繁地访问列表的元素,那么ArrayList会表现得更好。访问ArrayList中的元素更快,因为它是数组后端。

ArrayList添加或删除元素更慢除非从头到尾,因为ArrayList必须执行数组副本内部保持元素的顺序。

LinkedList的性能优于ArrayList用于添加和从列表中间删除元素。但是,访问列表中的元素更慢,除非在列表的头部。

    import java.util.ArrayList;
    import java.util.List;
    
    public class Main {
      public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Oracle");
        list.add("CSS");
        list.add("XML");
    
        System.out.println("List: " + list);
    
        int count = list.size();
        System.out.println("Size of  List: " + count);
    
        // Print each element with its index
        for (int i = 0; i < count; i++) {
          String element = list.get(i);
          System.out.println("Index=" + i + ", Element=" + element);
        }
    
        List<String> subList = list.subList(1, 3);
        System.out.println(subList);
    
        // Remove "CSS" from the list 
        list.remove("CSS"); // Same as list.remove(2);
         System.out.println(list);
      }
    }
    

上面的代码生成以下结果。

202104181111114_1.png

ArrayList APIs

LinkedList APIs

ListIterator

我们可以使用ListIterator接口以遍历列表。

ListIterator接口继承了Iterator接口并且它增加了几个方法来从当前位置向后访问列表中的元素。

以下代码显示了如何从列表中获取列表迭代器:

    ListIterator<String> fullIterator = list.listIterator();
    

为了得到在正向从索引5开始的列表迭代器,使用以下代码。

    ListIterator<String> partialIterator = list.listIterator(5);
    

以下代码显示如何使用ListIterator

    import java.util.ArrayList;
    import java.util.List;
    import java.util.ListIterator;
    
    public class Main {
      public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Oracle");
        list.add("SQL");
        list.add("CSS");
        list.add("XML");
        System.out.println("List: " + list);
        // Get the list iterator
        ListIterator<String> iterator = list.listIterator();
        while (iterator.hasNext()) {
          int index = iterator.nextIndex();
          String element = iterator.next();
          System.out.println("Index=" + index + ", Element=" + element);
        }
        // Reuse the iterator to iterate from the end to the beginning
        while (iterator.hasPrevious()) {
          int index = iterator.previousIndex();
          String element = iterator.previous();
          System.out.println("Index=" + index + ",  Element=" + element);
        }
      }
    }
    

上面的代码生成以下结果。

2021041811117_2.png

ListIterator可以向前看或回头一个列表。

next()方法向前移动一个索引,而previous()方法向后移动一个索引。

如果使用next()方法,后跟previous()方法,迭代器返回到相同的位置。

ListIterator APIs

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 列表
上一篇
Java 导航集
下一篇
Java 队列