1. 首先List<E>集合继承与Collection<E>,是一个接口。
① Collection (集合框架是JDK1.2版本出现的)
② list:是有序的,元素可以重复,以为该集合体系有索引。
经常用到的是实现该接口的ArrayList和LinkedList类
③ Arraylist: 底层的数据结构使用的是数组结构,
特点: 查询速度很快,但是增删稍慢。线程不同步
LinkedList: 底层使用的是链表数据结构。
特点: 增删速度很快,查询稍慢。
Vector:(JDK1.0版本出现的) 底层是数组数据结构,线程同步。被ArrayList替代了。(已经不用了)
2. List的两种遍历方式:
1 public class Demo { 2 public static void main(String[] args) { 3 ArrayList<String> list = new ArrayList<String>(); 4 list.add("A"); 5 list.add("B"); 6 list.add("C"); 7 8 System.out.println("........第一种遍历方式:for遍历......"); 9 for (Object li : list) { 10 System.out.println(li); 11 } 12 13 System.out.println("........第二种遍历方式:ListIterator迭代遍历......"); 14 ListIterator<String> it = list.listIterator(); 15 while (it.hasNext()) { 16 Object obj = it.next(); 17 System.out.println(obj); 18 } 19 } 20 }
效果图:
3.使用LinkList模拟一个堆栈或者队列数据结构。即: 堆栈:先进后出 ; 队列: 先进先出
class Duilie{ private LinkedList<Object> link; Duilie(){ link = new LinkedList<Object>(); } public void myAdd(Object obj){ link.addFirst(obj); } public Object myGet(){ return link.removeLast();//先进先出---若要改成先进后出,将removelast()改成removeFirst() } public boolean isNull(){ return link.isEmpty(); } } public class Demo2 { public static void main(String[] args) { Duilie dl = new Duilie(); dl.myAdd("java01"); dl.myAdd("java02"); dl.myAdd("java03"); dl.myAdd("java04"); while(!dl.isNull()){ System.out.println(dl.myGet()); } } }
效果图:
以上为 先进先出,若要改为先进后出,则根据代码中写的改一下就可以了