List:
|--List 元素是有序的,元素可以重复,因为该集合体系有索引。
|--ArrayList:底层数据结构使用的是数组结构,特点:查询速度很快,但是增删慢,线程不同步注意:对于判断的元素是否存在,以及删除等操作,只依赖equals方式
|--LinkedList:底层使用的链接数组结构。特点:增删速度快,查询慢
List
特有方法。凡是可以操作角标的方法都是该体系特有的方法。
增
add(index,element);
addAll(index,Collection);
删
remove(index);
改
set(index,element);
查
get(index);
subList(from,to);
listIterator();
ArrayList例子
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListDemo2 {
public static void main(String[] args)
{
ArrayList arr = new ArrayList();
arr.add(new Person("李鸿章", 60));
arr.add(new Person("李鸿章", 60));
arr.add(new Person("袁世凯", 58));
arr.add(new Person("张作霖", 65));
arr = singleElement(arr);
for(Iterator it = arr.iterator(); it.hasNext();)
{
Person p = (Person)it.next();
System.out.print(p.toString()+" ");
}
}
public static ArrayList singleElement(ArrayList arr)
{
ArrayList newArray = new ArrayList();
for(Iterator it = arr.iterator(); it.hasNext();)
{
Object obj = it.next();
//判断如果obj里面为空 则传入新的元素
if(!(newArray.contains(obj)))
newArray.add(obj);
}
return newArray;
}
}
class Person
{
private String name;
private int age;
public Person(String name,int age)
{
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String toString()
{
return this.name+this.age;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p =(Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
}
LinkedList
JDK1.0版本的写法
addFirst();
addLast();
?
getFirst(); //先进后出
getLast();//先进先出
可以获取元素,但不能删除元素,如果集合中没有元素,会抛出NoSuchElementException
removeFirst();
removeLast();
可以获取元素,但元素被删除,如果集合中没有元素,会抛出NoSuchElementException
JDK1.0版本以上的写法
offerFirst();
offerLast();
peekFirst();//先进后出
peekLast();//先进先出
获取元素,但不删除元素。如果集合中没有元素,会返回null。
pollFirst();
pollLast();
获取元素,但是元素被删除。如果集合中没有元素,会返回null。
LinkedList 例子
import java.util.LinkedList;
public class LinkedListDemoTest
{
public static void main(String[] args)
{
DuiLie link = new DuiLie();
link.myAdd("1");
link.myAdd("2");
link.myAdd("3");
link.myAdd("4");
while (!link.isNull())
{
System.out.println(link.myGet());
}
}
}
class DuiLie
{
private LinkedList link;
public DuiLie()
{
link = new LinkedList();
}
public void myAdd(Object obj)
{
link.addFirst(obj);
}
public Object myGet()
{
return link.getFirst();
}
public boolean isNull()
{
return link.isEmpty();
}
}