java中的List

来源:互联网 发布:腾达路由器mac地址过滤 编辑:程序博客网 时间:2024/05/20 23:03

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


整理自网络

0 0
原创粉丝点击