1、List接口继承了Collection接口。List中的元素是按顺序存放的,可以有重复元素。
- ArrayList类:实现数组的动态操作,线程不安全,执行效率比Vector高
- Vector类:实现动态数组线程安全向量类
- Stack类:表示后进先出的对象栈,是Vector类的子类,
2、构造方法
Arraylist类的构造方法:
public ArrayList();//构造一个初始容量为10的列表
public ArrayList(Collection c);//构造一个包含指定集合Collection对象元素的列表
public ArrayList(int initialCapacity);//构造一个初始容量为指定值initialCapacity的列表
由于ArrayList是动态数组,它可以自动地进行数组的扩容。如果元素的个数超过了ArrayList的容量,它就会将当前的容量扩大1倍,并将原来的元素放到这个扩容以后的新的数组中。为了提高ArrayList的使用效率,可以使用trimToSize方法将ArrayList的容量调整为当前的容量大小,以便释放多余的空间。
示例代码:
import java.util.ArrayList;
import java.util.TreeSet;
import java.util.Iterator;
public class ArrayListTest{
public static void main(String[] args){
ArrayList al = new ArrayList();
al.add("a");
al.add("b");
al.add("c");
al.add("d");
al.trimToSize();
System.out.println("al size:"+al.size());
TreeSet tr=new TreeSet();
tr.add("ta");
tr.add("tb");
ArrayList al1 = new ArrayList(tr);
al1.addAll(al);
System.out.println("al1 size:"+al1.size());
for(int i=0;i<al1.size();i++)
System.out.println("al1["+i+"]:"+al1.get(i));
Iterator it = al1.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
执行结果:
C:\javastudy>java ArrayListTest
al size:4
al1 size:6
al1[0]:ta
al1[1]:tb
al1[2]:a
al1[3]:b
al1[4]:c
al1[5]:d
ta
tb
a
b
c
d
C:\javastudy>
Vector类比ArrayList类多了一种构造方法:
public Vector(int initialCapacity, int capaciyIncrement)//构造具有指定的初始容量和容量增量的向量
Stack类比Vector类多了5个方法:
pulic E push(Object item)//将元素引用压入栈顶
public E pop()//删除栈顶元素
public E peek()//取得栈顶元素但不删除它
public boolean empty()//判断栈是否为空
public int search(Object o)//返回Object对象在栈中所处的位置。其中栈顶元素的位置为1,以后依次递增1。如果对象不在栈中则返回-1
示例代码:
import java.util.Stack;
public class StackTest{
public static void main(String[] args){
Stack st= new Stack();
st.push("blue");
st.push("green");
st.push("red");
st.push("white");
System.out.println(st);
st.pop();
st.pop();
System.out.println(st);
if(!st.empty())
System.out.println(st.peek());
int i = st.search("green");
System.out.println(i);
System.out.println(st.search("blue"));
for(int j=0;j<st.size();j++)
System.out.println(st.get(j));
}
}
执行结果:
C:\javastudy>java StackTest
[blue, green, red, white]
[blue, green]
green
1
2
blue
green
整理自网络