JAVA学习 集合框架List

List实现的超级父类接口:Collection

List :元素是有序的,元素可以重复。因为该集合体系有索引。

常见子类:1.ArrayList

                 2.LinkedList

                 3. Vector:底层是数组结构。线程同步。被ArrayList代替了


 ArrayList:底层的数据结构使用的是数组结构。特点:查询速度快,但是增删稍慢。线程不同步。

import java.util.*;
public class CollectionDemo {
	public static void main(String[] args) {
		// 创建一个集合容器,使用collection接口的子类,ArrayList
		ArrayList al=new ArrayList();
		al.add("love");
		al.add("pain");
		al.add("prade");
		
		//打印原集合
		System.out.println(al);
		
		//获取个数,集合长度
		System.out.println(al.size());
		
		//删除元素
		//al.remove("pain");
		//al.clear();  		//清空集合	
		
		//判断元素
		System.out.println("pain是否存在? "+al.contains("pain"));
		System.out.println("集合是否为空? "+al.isEmpty());
		
		System.out.println(al);
		
	}

}

 LinkList:底层使用的链表数据结构。特点:增删速度快,但查询速度慢。

    使用LinkedList模拟一个堆栈或者队列数据结构

    堆栈:先进后出,如同一个杯子
    队列:先进先出,如同一个水管

import java.util.*;
//实现堆栈
class Stack{
	private LinkedList link;
	Stack(){
		link=new LinkedList();
	}
	
	public void Myadd(Object obj){
		link.add(obj);
	}
	
	public Object Myget(){
		return link.removeFirst();
	}
	
	public boolean Myempty(){
		return link.isEmpty();
}
}
public class LinkedListDemo {
	public static void main(String[] args) {
		Stack st=new Stack();
		st.Myadd("Stack....love");
		st.Myadd("Stack....pain");
		st.Myadd("Stack....prade");
		
		while(!st.Myempty()){
			System.out.println(st.Myget());
		}
	}
}

 List集合特有的迭代器:ListIterator是Iterator的子接口
 在迭代时,不可以通过集合对象的方法操作集合中的元素,因为这样会发生ConcurrentModificationException异常。 
 所以,在迭代中,只能用迭代器的方法操作元素,可是Iterator方法时有限的,只能对元素进行判断,取出,删除的操作,

 如果想要其他的操作如添加,修改等,就需要使用其子接口 ListIterator,该接口只能通过List集合的ListIterator方法获取。

import java.util.*;
public class ListDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList al=new ArrayList();
		al.add("love");
		al.add("pain");
		al.add("prade");
		
		al.add(1,"angry");
		System.out.println(al);
		// al.remove(2);
		// al.set(1,"laziness");
		/*
		   for(int i=0;i

你可能感兴趣的:(JAVA学习)