在 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 中得到更多的好比。