您的位置:

Java ArrayList 用法详解

在 Java 中,ArrayList 是一个非常常用的类,它提供了比数组更加灵活的数据结构,也是我们在 Java 编程中使用最多的集合类之一。本文将详细介绍 Java ArrayList 的用法,帮助读者更深入地了解和掌握它。

一、ArrayList 用法

Java ArrayList 是一个可以动态增长和收缩的数组,这意味着您无需在使用前指定其容量。因此,ArrayList 可以自动处理数组容量的扩展。这使其成为向集合中添加元素的首选方法之一。 下面是一些 ArrayList 的用例:
ArrayList list = new ArrayList
   ();
list.add("hello");
list.add("world");
list.add("!");
System.out.println(list);

   
  
该代码将创建一个 ArrayList 的实例,并添加三个字符串元素。在添加完成后,使用 System.out.println() 函数将 ArrayList 的所有元素打印出来。此时,输出结果为:
["hello", "world", "!"]
如果你想将 ArrayList 字符串转成数组,可以使用toArray() 方法实现:
String[] array = list.toArray(new String[0]);

二、C 中 ArrayList 的用法

在 C 中没有 ArrayList 这样一个官方类,但也可以使用 C 预处理器宏(参考 stdarg.h 头文件中的实现)。其中,我们使用了一些简单的类型定义,以便使相关的代码更容易阅读。 下面是一个基于 C 的 ArrayList 的简单实现:
#include 
#include 
   

typedef struct {
   void* content;    /*指向数组数据的指针*/
   size_t size;      /*当前数组尺寸*/
   size_t length;    /*当前已使用的尺寸*/
   size_t contentSize; /*数组元素的每个元素大小*/
} ArrayList;

bool ArrayList_init(ArrayList * list, size_t contentSize){
    list->contentSize = contentSize;
    list->size = 4;
    list->length = 0;
    list->content = calloc(list->size, contentSize);
    return list->content != NULL;
}

void ArrayList_destroy(ArrayList * list){
    free(list->content);
    list->content = NULL;
}

bool ArrayList_add(ArrayList * list, void * element){
    if(list->length >= list->size){
        list->size += 4;
        void * newContent = realloc(list->content, list->size * list->contentSize);
        if (newContent == NULL)
            return false;
        list->content = newContent;
    }
    void* pre = (char*)list->content + list->length * list->contentSize;
    memcpy(pre, element, list->contentSize);
    list->length++;
    return true;
}

void * ArrayList_get(ArrayList * list, size_t index){
    if (index >= list->length) {
        return NULL;
    }
    char *ptr = list->content;
    ptr += index * list->contentSize;
    return (void *) ptr;
}

   
  
该代码可以创建一个 ArrayList 结构体,并提供了 add 和 get 方法来向列表中添加和检索元素。

三、ArrayList 的所有方法

Java 的 ArrayList 有许多方法,包括: 1. add(Object o) 方法:向列表的尾部添加元素。 2. add(int index, Object o) 方法:在指定的 index 处将元素插入列表,并移动其余的元素以填充空间。 3. clear() 方法:移除列表中的所有元素。 4. contains(Object o) 方法:如果列表包含指定的元素,则返回 true。 5. get(int index) 方法:返回列表中指定位置的元素。 6. remove(Object o) 方法:从列表中移除指定的元素。 7. size() 方法:返回列表中元素的数量。 下面是一个简单的演示代码:
import java.util.ArrayList;

public class ExampleArrayList {
   public static void main(String[] args) {
      ArrayList items = new ArrayList
   ();
      
      // 向 ArrayList 添加元素
      items.add("A");
      items.add("B");
      items.add("C");
      items.add("D");
      items.add("E");
      items.add("F");
      
      // 从 ArrayList 检索元素
      System.out.println("第三个元素:" + items.get(2));
      
      // 遍历 ArrayList
      for (String item : items) {
         System.out.println(item);
      }
      
      // 从 ArrayList 移除元素
      items.remove("B");
      items.remove(2);
 
      // ArrayList 大小
      System.out.println("ArrayList 大小:" + items.size());
      
      // 遍历 ArrayList(新列表大小)
      for (String item : items) {
         System.out.println(item);
      }
   }
}

   
  
输出结果如下:
第三个元素:C
A
B
C
D
E
F
ArrayList 大小:4
A
C
E
F

四、ArrayList 中 set 用法

set 方法允许更改 ArrayList 中指定位置的元素。 以下是演示这种情况的示例:
import java.util.ArrayList;

public class ExampleArrayList {
   public static void main(String[] args) {
      ArrayList items = new ArrayList
   ();
      
      // 向 ArrayList 添加元素
      items.add("A");
      items.add("B");
      items.add("C");
      items.add("D");
      items.add("E");
      items.add("F");
      
      // 从 ArrayList 检索元素
      System.out.println("第三个元素:" + items.get(2));
      
      // 遍历 ArrayList
      for (String item : items) {
         System.out.println(item);
      }
      
      // 更改 ArrayList 中的元素
      items.set(2, "New C");
 
      // ArrayList 大小
      System.out.println("ArrayList 大小:" + items.size());
      
      // 遍历 ArrayList(新列表大小)
      for (String item : items) {
         System.out.println(item);
      }
   }
}

   
  
输出结果如下:
第三个元素:C
A
B
C
D
E
F
ArrayList 大小:6
A
B
New C
D
E
F

五、ArrayList 类的方法选取

在 Java 中,ArrayList 类还有许多有用的方法,选择一个子集是很困难的。在这里,我们仅介绍四个常用的方法: 1. addAll(Collection c) 方法:向列表尾部添加指定集合中的所有元素。 2. clone() 方法:创建并返回此 ArrayList 的一份浅表副本。 3. isEmpty():如果 ArrayList 中没有元素,则返回 true。 4. indexOf(Object o):返回列表中指定元素的第一次出现的索引。 下面是一些演示代码:
import java.util.ArrayList;
import java.util.Arrays;

public class ExampleArrayList {
   public static void main(String[] args) {
      ArrayList numbers = new ArrayList
   ();
      
      // 向 ArrayList 添加元素
      numbers.add(2);
      numbers.add(4);
      numbers.add(6);
      numbers.add(8);
      System.out.println("原始 ArrayList:" + numbers);
      
      // 向 ArrayList 添加另一个集合中的所有元素
      numbers.addAll(Arrays.asList(1, 3, 5, 7));
      System.out.println("修改后的 ArrayList:" + numbers);
      
      // 列表的浅表副本
      ArrayList
     copyOfNumbers = (ArrayList
     ) numbers.clone();
      System.out.println("浅表复制 ArrayList " + copyOfNumbers);
      
      // 列表是否为空?
      System.out.println("ArrayList 是否为空?" + numbers.isEmpty());
      
      // 元素第一次出现的位置
      System.out.println("数字 5的索引:" + numbers.indexOf(5));
   }
}

     
    
   
  
输出结果如下:
原始 ArrayList:[2, 4, 6, 8]
修改后的 ArrayList:[2, 4, 6, 8, 1, 3, 5, 7]
浅表复制 ArrayList [2, 4, 6, 8, 1, 3, 5, 7]
ArrayList 是否为空?false
数字 5的索引:6

结束语

在本文中,我们已经介绍了 Java 的 ArrayList 类的一些重要用法。ArrayList 是一个精巧的数据结构,它可以帮助我们动态存储和操作数据。我们希望在您使用 Java 开发时,您会在 ArrayList 中得到更多的好比。