*【1各自的特点】
ArrayList:底层数据结构为数组,查询快,增删慢,线程不安全,效率高;
Vector:底层数据结构为数组,查询快,增删慢,线程安全,效率慢,一般不用;
LinkedList:底层数据结构为链表,查询慢,增删快,线程不安全,效率高
*2 ArrayList
ArrayList集合继承了List的所有成员方法,没有新增,用法和List同
*3 Vector
Vector比继承体系历史更久远,有一些实现同样获取、遍历功能更复杂的方法,老版本用,新版本基本不用。
package it.cast01;
import java.util.Enumeration;
import java.util.Vector;
/*
* Vector特有方法,Vector的出现比集合早
* 添加
* public void addElement(Object obj) ------add()
* 获取
* public Object elementAt(int index)返回指定下标的元素-----get()
* 遍历
* public Enumeration elements() 返回组件枚举,相当于迭代器-----iterator()
* Enumeration提供2个方法:
* boolean hasMoreElements()
* nextElement()
*/
public class Test {
public static void main(String[] args) {
Vector v = new Vector();
v.addElement("hello");
v.addElement("world");
v.addElement("java");
//2种遍历方式,普通for,迭代器
for(int i=0;i<v.size();i++){
String s = (String)v.elementAt(i);
System.out.println(s);
}
System.out.println("----------");
Enumeration en = v.elements();
while(en.hasMoreElements()){
String s = (String)en.nextElement();
System.out.println(s);
}
}
}
- 4 LinkedList
LinkedList中多了新增,删除,获取First&Last元素的方法
/*添加
* public void addFirst(Object e)
* public void addLast(Object e)
* 获取
*public Object getFirst()
*public Object void getLast()
*移除
*public Object removeFirst()
*public Object removeLast()
*/
- 5 练习
5.1 删除ArrayList集合中重复的字符串元素
package it.cast01;
import java.util.ArrayList;
import java.util.Iterator;
/*
* 去除ArrayList中重复元素
*/
public class Test {
public static void main(String[] args) {
ArrayList alist = new ArrayList();
alist.add("hello");
alist.add("world");
alist.add("hello");
alist.add("hello");
alist.add("java");
alist.add("world");
alist.add("java");
//方法一,创建一个个新的集合存放不重复字符串
/*ArrayList alist2 = new ArrayList();
Iterator it = alist.iterator();
while(it.hasNext()){
Object s = it.next();
if(!alist2.contains(s)){
alist2.add(s);
}
}
System.out.println(alist2);*/
//方法二 2层普通for循环,注意删除元素后,下标也要减一
for(int i=0;i<alist.size();i++){
String temp = (String)alist.get(i);
for(int j=i+1;j<alist.size();j++){
String s = (String)alist.get(j);
if(s.equals(temp)){
alist.remove(j);
j--;
}
}
}
System.out.println(alist);
}
}
5.2 LinkedList模拟一个具有栈特点的集合类
package it.cast01;
import java.util.Iterator;
import java.util.LinkedList;
/*
* LinkedList定义一个集合,模拟栈的特点先进后出(压栈弹栈)
*/
public class Test {
public static void main(String[] args) {
//创建集合对象
LinkDemo demo = new LinkDemo();
//创建集合对象,并向集合中添加元素
demo.add("hello");
demo.add("world");
demo.add("java");
while(!demo.isEmpty()){
System.out.println(demo.get());
}
}
}
/**
* 自定义栈集合
* @author Administrator
* version v1.0
*/
class LinkDemo{
private LinkedList link ;
public LinkDemo(){
link = new LinkedList();
}
public void add(Object o){
link.addFirst(o);
}
public Object get(){
return link.removeFirst();
}
public boolean isEmpty(){
return link.isEmpty();
}
}
网友评论