Collection接口的继承体系如下:
在我们以后的学习中,常见的实现类和接口如下:
我们这篇博客主要用来讲解 java.util.List
List接口
List接口的特点:
- 元素有序
- 每个元素都存在一个索引
- 元素可以重复
List接口的方法有:
- boolean add(E e);
- boolean isEmpty();
- boolean remove(Object o);
- void clear();
- int size();
- Iterator iterator();
- E get(int index);
- int indexOf(Object o);
List接口的实现类—— ArrayList
ArrayList的特点:
- 底层数据结构是动态数组,查询快,增删慢
- 线程不安全,效率高
- 只能存储同一类型或定义类型的子类的元素
让我们通过一个例子,来理解并使用ArrayList
import java.util.ArrayList;
public class AboutArrayList
{
public static void main(String[] args)
{
ArrayList<Integer> array=new ArrayList<>();
array.add(10);
array.add(20);
int num=array.get(0);
System.out.println(num);// 10
int[] a=
{ 1, 2, 3, 4, 5 };
ArrayList<Integer> arr=new ArrayList<>();
for(int i=0; i < a.length; i++)
{
arr.add(a[i]);
}
for(int sum : arr)
{
System.out.println(sum);// 1 2 3 4 5
}
}
}
List接口的实现类—— LinkedList
LinkedList的特点是:
- 底层数据结构是链表,查询慢,增删快
- 线程不安全,效率高
- 只能存储同一类型 或 定义类型的子类 的元素
让我们通过一个例子,来理解并使用LinkedList,这里需要用到我们之前写过的Complex类:
import java.util.LinkedList;
public class AboutLinkedList
{
public static void main(String[] args)
{
Complex a=new Complex(4, 5);
LinkedList<Complex> complexList=new LinkedList<>();
complexList.add(new Complex());
complexList.add(new Complex(1));
complexList.add(new Complex(4, 5));
complexList.add(new Complex(2));
for(Complex aa : complexList)
{
System.out.println(aa);
}
}
}
List接口的实现类—— Vector
Vector的特点是:
- 底层数据结构是数组,查询快,增删慢
- 线程安全,效率低
- 可存储不同类型的元素
import java.util.Vector;
public class Main
{
public static void main(String[] args)
{
Vector<String> vector=new Vector<>();
vector.add("aa");
vector.add("bb");
vector.add("cc");
vector.remove(0);
System.out.println(vector.size());
for(String aaa : vector)
{
System.out.println(aaa);
}
}
}
对于集合类Collection的学习,我建议读者还是多查查API,比如ArrayList有二十种办法、LinkedList有三十九种方法、Vector类一共有四十二种方法,本篇博文提到的类的方法只是其中很少的一部分。。。
在jdk5.0中新增了Queue
集合关系如下:
Queue的一些常用方法:
- add 增加一个元索。
如果队列已满,则抛出一个IIIegaISlabEepeplian异常 - remove 移除并返回队列头部的元素。
如果队列为空,则抛出一个NoSuchElementException异常 - element 返回队列头部的元素。
如果队列为空,则抛出一个NoSuchElementException异常 - offer 添加一个元素并返回true 。
如果队列已满,则返回false - poll 移除并返问队列头部的元素 。
如果队列为空,则返回null - peek 返回队列头部的元素 。
如果队列为空,则返回null - put 添加一个元素 。如果队列满,则阻塞
- take移除并返回队列头部的元素