Java中的集合(Collection)可以用来存储多个元素,它是Java中的一种对象容器,可用于存储多个数据对象。在Java中,集合框架是一个实现了大量接口的完整体系,其中最基本且经常使用的接口就是Collection
接口。
Collection接口
Java中的集合体系最根本的就是Collection
接口。Collection
接口是Java中集合的顶级接口,提供了集合中元素的基本操作。
Collection
接口中定义了常用的方法:
boolean add(E e)
将元素添加到集合中。boolean remove(Object o)
删除集合中指定的元素。int size()
返回集合中的元素数量。boolean isEmpty()
判断集合是否为空。
在Collection
接口下还有两个子接口List
和Set
。
List接口
List
接口是一个有序的集合,可以存储重复的元素。List
接口支持按索引或者位置访问,允许在指定位置插入、替换、删除元素。
List
接口中定义了常用的方法:
void add(int index, E element)
在指定的索引位置添加元素。E get(int index)
返回指定索引位置的元素。int indexOf(Object o)
返回集合中第一次出现指定元素的位置。int lastIndexOf(Object o)
返回集合中最后一次出现指定元素的位置。E remove(int index)
删除某个指定索引位置的元素。
List
接口的实现类有ArrayList
、LinkedList
和Vector
。
ArrayList类
ArrayList
是一个动态数组,与Java中的普通数组相比,它可以动态增长,容量自动扩充,内置使用数组实现。ArrayList
类提供了类似数组的访问机制,使用get
和set
方法将元素添加到指定的索引位置,并提供了增加、删除和替换元素的方法。
示例:
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println("The elements in ArrayList:");
for (String str : list) {
System.out.println(str);
}
}
}
运行结果:
The elements in ArrayList:
A
B
C
LinkedList类
LinkedList
是一个双向链表,它的元素存储在链表中,与ArrayList
相比,它在插入、删除元素时有更好性能表现,但在访问元素时性能稍差。
示例:
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
list.add(10);
list.add(20);
list.add(30);
list.addFirst(5);
list.addLast(40);
System.out.println("The elements in LinkedList:");
for (Integer i : list) {
System.out.println(i);
}
}
}
运行结果:
The elements in LinkedList:
5
10
20
30
40
Vector类
Vector
是一种动态数组,它与ArrayList
类似,但是Vector
是线程安全的。在多线程环境下,Vector
的效率会比ArrayList
低。
Set接口
Set
接口是Java中唯一一个不允许有重复元素的集合,其中的元素不按特定方式排序。
Set
接口中定义了常用的方法:
boolean add(E e)
将元素添加到集合中。boolean contains(Object o)
判断集合中是否包含指定的元素。boolean isEmpty()
判断集合是否为空。boolean remove(Object o)
删除集合中指定的元素。int size()
返回集合中的元素数量。
Set
接口的实现类有HashSet
、TreeSet
、LinkedHashSet
等。
HashSet类
HashSet
是一个基于哈希表的无序集合,它不保证元素的顺序,允许使用null
元素。由于哈希表的性质,它的插入和查询速度非常快,但遍历时性能较差。
示例:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("C");
System.out.println("The elements in HashSet:");
for (String str : set) {
System.out.println(str);
}
}
}
运行结果:
The elements in HashSet:
A
B
C
TreeSet类
TreeSet
是一个基于红黑树(Red-Black tree)的有序集合,它可以保证元素的顺序,但插入和查询速度较慢。
示例:
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
set.add(10);
set.add(20);
set.add(30);
System.out.println("The elements in TreeSet:");
for (Integer i : set) {
System.out.println(i);
}
}
}
运行结果:
The elements in TreeSet:
10
20
30
总结
Java集合框架是一套非常完整的集合体系,其中Collection
接口是最基础的接口,List
接口支持有序的列表,Set
接口保证元素没有重复,每个接口都有许多实现,它们都有各自的使用场景和优缺点。我们需要根据实际需要选择合适的集合实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java集合collection接口与子接口及实现类 - Python技术站