举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > java列表和数组的区别 Java 列表

java列表和数组的区别 Java 列表

2023-03-23 22:20 Java教程

java列表和数组的区别 Java 列表

java列表和数组的区别

Java列表和数组都是用来存储数据的容器,但它们之间有一些重要的区别。

首先,数组是一种固定大小的容器,而列表是可变大小的容器。这意味着,当你想要在数组中添加新元素时,你必须重新分配内存来存储新元素。而在列表中,你可以轻松地添加或删除元素。

其次,数组只能存储相同类型的元素,而列表可以存储不同类型的元素。这意味着,如果你想要在数组中存储不同的对象(例如String、Integer、Float、Boolean 等),你必须使用Object 数组。而在列表中,你可以轻松地将不同的对象放在一个列表中。

此外,数组是有序的容器(即元素排序是固定的) ;而列表是无序的容器 (即元素排序是不固定的 ) 。这意味着当你想要根据特定条件对数据进行排序时 ; 使用数组会很方便 ; 而使用列表会需要一些额外工作 。

// 声明一个int 数组 
int[] array = new int[10]; 
// 声明一个ArrayList 
ArrayList list = new ArrayList(); 

Java 列表

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(独占)。

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

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);
  }
}

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

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);
    }
  }
}

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

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

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

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

ListIterator APIs

阅读全文
以上是名动网为你收集整理的java列表和数组的区别 Java 列表全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们