作者:米粒尖尖果儿_445 | 来源:互联网 | 2024-11-30 09:14
在Java中,java.util.List
接口是集合框架的一部分,它扩展了Collection
接口,提供了对有序集合(也称为序列)的支持。List允许存储重复的元素,并且可以通过索引来访问这些元素。
List接口的主要特性:
- 保持元素插入顺序:List确保元素按照它们被添加的顺序进行存储和返回。
- 支持随机访问:通过索引可以快速访问任何位置的元素。
- 允许重复元素:同一个对象可以在List中出现多次。
带索引的方法:
为了更好地管理和操作元素,List接口提供了一系列带有索引的方法,这些方法使得对特定位置的操作更加灵活和高效。
public void add(int index, E element)
此方法允许在指定的索引位置插入一个新元素。例如:
List list = new ArrayList<>();
list.add("a");
list.add("b");
list.add(1, "c"); // 结果: [a, c, b]
public E get(int index)
该方法用于获取指定索引处的元素。例如:
for (int i = 0; i String s = list.get(i);
System.out.println(s);
}
public E remove(int index)
此方法用于移除指定索引处的元素,并返回被移除的元素。例如:
String removed = list.remove(1); // 移除索引为1的元素
System.out.println(removed); // 输出: c
public E set(int index, E element)
该方法用于替换指定索引处的元素,并返回原来的元素。例如:
String oldElement = list.set(1, "B"); // 替换索引为1的元素
System.out.println(oldElement); // 输出: c
ArrayList集合
底层实现:ArrayList基于动态数组实现,这意味着它的元素是连续存储的。这种设计使得ArrayList在随机访问时非常高效,但在插入和删除元素时性能较差,尤其是在列表的中间或开始位置。尽管如此,由于大多数应用程序主要涉及读取操作,因此ArrayList是使用最广泛的集合之一。
LinkedList集合
底层实现:LinkedList是一个双向链表,每个元素都包含指向前一个元素和后一个元素的引用。这种结构使得在列表的任意位置插入或删除元素都非常高效,但随机访问性能较差。
添加元素:
public void addFirst(E e)
此方法将指定元素插入到列表的开头。例如:
LinkedList linked = new LinkedList<>();
linked.add("a");
linked.add("b");
linked.add("c");
linked.addFirst("www"); // 结果: [www, a, b, c]
public void addLast(E e)
此方法将指定元素添加到列表的末尾,与add(E e)
方法等效。例如:
linked.addLast("com"); // 结果: [www, a, b, c, com]
public void push(E e)
此方法将元素推入列表所表示的堆栈,等效于addFirst(E e)
。例如:
linked.push("top"); // 结果: [top, www, a, b, c, com]
获取元素:
public E getFirst()
此方法返回列表的第一个元素。例如:
if (!linked.isEmpty()) {
String first = linked.getFirst(); // 输出: top
String last = linked.getLast(); // 输出: com
}
移除元素:
public E removeFirst()
此方法移除并返回列表的第一个元素。例如:
String firstRemoved = linked.removeFirst(); // 移除并返回: top
public E removeLast()
此方法移除并返回列表的最后一个元素。例如:
String lastRemoved = linked.removeLast(); // 移除并返回: com
public E pop()
此方法从列表所表示的堆栈中弹出一个元素,等效于removeFirst()
。例如:
String popped = linked.pop(); // 移除并返回: www
Vector集合
Vector与ArrayList类似,但它是线程安全的。然而,由于Vector的同步机制会带来额外的开销,因此在大多数情况下,推荐使用ArrayList或Collections.synchronizedList()来替代Vector。