一、List特点
1、List有序(存入和取出顺序一致),有索引,元素可重复。Set元素不重复。
2、相对于Collection,除了增删查,扩展了位置索引和修改数据。
二、listIterator迭代器
1、特点:除了iterator的功能外,还有自己特定的listIterator功能。(因为iterator不允许在遍历操作过程中修改或添加数据,所以有了自己的listIterator,可以在遍历过程中,使用listIterator中的方法进行修改或添加操作)。
2、典型方法
List l1 = new ArrayList();
l1.add("abc1");
l1.add("abc2");
l1.add("abc3");
l1.add("abc4");
ListIterator it = l1.listIterator(); //创建list迭代器
while(it.hasNext()) {
Object obj = it.next();
if (obj.equals("abc1")) {
it.set("123"); //将"abc1"修改"123"
}
else if(obj.equals("abc2")){
it.add("456"); //"abc2"后添加"456"
}
else {
System.out.println(obj);
}
}
System.out.println( l1);
三、List的实现类
1、Vector:内部是数组数据结构,是同步的。最老版本的,几乎不用了。
2、ArrayList:内部是数组数据结构,是不同步的。替代了Vector,查询速度很快。
3、LinkedList:内部是链表数据结构,是不同步的。增删元素速度很快。
四、LinkedList类–链表结构
1。添加
addFirst(E e)、addLast(E e)
2。获取
getFirst()、getLast() :获取但不移除,如果列表为空,抛出NoSuchElementException
peekFirst()、peekLast() :获取但不移除,如果列表为空,返回null。
removeFirst()、removeLast():获取元素并移除,如果列表为空,抛出NoSuchElementException
pollFirst()、peekLast():获取元素并移除,如果列表为空,返回null。
3。用链表实现队列的数据结构
队列:先进先出
堆栈:先进后出
class DuiLie {
private LinkedList li;
public DuiLie(){
li = new LinkedList();
}
public void addDL(Object obj)
{
li.addLast(obj);
}
public Object getDL()
{
return li.removeFirst();
}
public boolean DLisEmpty()
{
return li.isEmpty();
}
}
五、ArrayList类–数组结构
数据添加、删除等与上面相似。下面来存储对象为例子,表示集合是用来存储对象的。
public class Test {
public static void main(String[] args) {
ArrayList l = new ArrayList();
l.add(new Person("a",10)); //存入对象,其实在堆中存放对象的哈希值
l.add(new Person("b",11));
l.add(new Person("c",12));
l.add(new Person("d",13));
for(Iterator it = l.iterator();it.hasNext();)
{
Person p = (Person) it.next();
//it.next()是object,所以想要调用Person内中方法,必须向下转型。
System.out.println(p.getName()+"---"+p.getAge());
}
}
}
class Person{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}