集合 collection、、Linklist、、Vector day14

/*
 * Collection
 *  |--List:元素是有序的,元素是可以重复的。因为该集合体系有索引
 *   |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。增删稍慢。 线程不同步
 *   |--LinkList:底层使用的是链表数据结构。特点:增删速度很快,查询慢。
 *   |--Vector:出现是1.0版本,那个时候还没有集合框架。线程同步。被ArrayList替代了
 *
 *  |--Set:元素是无序的,元素不可以重复。
 *
 *
 * List:
 *   特有方法。凡是可以操作角标的方法都是该体系特有的方法。
 *   
 * 增
 *   add(index,element);
 *   addAll(index,Collection);
 * 删
 *   remove(index);
 * 改
 *   set(index,element);
 * 查
 *   get(index);
 *   subList(from,to);
 *   ListIterator();
 *
 *
 * */

//List集合特有的迭代器。ListIterator是Iterator的子接口。
//在迭代时,不可以通过集合对象的方法操作集合的元素。
//因为会发生ConcurrentModificationException异常

//所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的
//只能对元素进行判断,取出,删除的操作,
//如果想要其他的操作,如添加,修改等,就需要使用其子接口ListIterator。

//该接口只能通过List集合的ListIterator完成
//List集合中的元素都带角标


import java.util.*;

public class ListDemo {

 /**
  * @param args
  */
 public static void sop(Object obj)
 {
  System.out.println(obj);
 }
 
 public static void method()
 {
  ArrayList al = new ArrayList();
  
  al.add("java01");
  al.add("java02");
  al.add("java03");
  al.add("java04"); 
  
  sop("原集合是:"+ al);
  //在指定位置添加元素。
  al.add(1,"java09");
  sop(al);
  //删除指定位置的元素
  //al.remove(2);
  al.set(2, "java07");
  sop("get(1):" + al.get(1));
  sop(al);
  //获取所有元素。
  for(int x=0; x<al.size();x++)
  {
   System.out.println("al("+x+")"+al.get(x));
  }
  
  Iterator it = al.iterator();
  while(it.hasNext())
  {
   sop("next:" + it.next());
  }
  
  //通过indexof获取对象的位置
  sop("index="+al.indexOf("java01"));
  //包含首不包含尾
  List sub = al.subList(1, 3);
  
  sop("sub="+ sub);
 }
 
 public static void main(String[] args) {
  ArrayList al = new ArrayList();
  
  //添加元素
  al.add("java01");
  al.add("java02");
  al.add("java03");
  al.add("java04"); 
  sop(al);
  
  
  ListIterator li = al.listIterator();
  
  sop("hasPrevious()"+li.hasPrevious());
  while(li.hasNext())
  {
   Object obj = li.next();
   
   if(obj.equals("java02"))
    //li.add("java009");
    li.set("java006");
  }
  
  sop("hasNext:"+li.hasNext());
  sop("hasPrevious:"+li.hasPrevious());
  
  while(li.hasPrevious())
  {
   sop("pre::"+li.previous());   
  }
  
  sop("hasNext:"+li.hasNext());
  sop("hasPrevious:"+li.hasPrevious());
  /*Iterator it = al.iterator();
  
  //在迭代过程中,准备添加或者删除元素
  
  while(it.hasNext())
  {
   Object obj = it.next();
   
   //if(obj.equals("java02"))
    //al.add("java008");
   //会报错误,一个在添加,一个在修改。。。。出现并发修改会报此异常
   // java.util.ConcurrentModificationException
   
   if(obj.equals("java02"))
    it.remove();//将java02的引用从集合中删除,
   //元素还被obj使用,能打印不能添加
   sop("obj=" + obj);
  }*/
  sop(al);
 }

}

 

package day14;

/*
 * LinkList:特有方法:
 * addFirst();
 * addlast();
 *
 * getFirst();
 * getLast();
 * 获取元素,但不删除元素
 *
 * removeFirst();
 * removeLast();
 * 获取元素,并且删除元素.如果集中没有元素,会出现NoSuchElementException
 *
 * 在JDK1.6出现了替代方法。
 *
 * offerFirst();
 * offerLast();
 * 添加元素 
 * 返回boolean !--Inserts the specified element at the front of this list.
 *  offer 将指定元素添加到此列表的末尾(最后一个元素)。
 *
 * peekFirst();
 * peekLast();
 * 获取元素但不删除元素。如果集合中没有元素。会返回null.
 * peek() 找到但不移除此列表的头(第一个元素)。
 * Retrieves, but does not remove, the first element of this list,
 * or returns null if this list is empty.
 *
 * pollFirst();
 * pollLast();
 * 获取元素而且并被元素删除。如果集合中没有元素。会返回null.
 * poll()  找到并移除此列表的头(第一个元素)。
 * pollFirst();
 * Retrieves and removes the first element of this list,
 * or returns null if this list is empty.
 * */

import java.util.*;

public class LinkedListDemo {

 /**
  * @param args
  */
 public static void main(String[] args) {
  LinkedList link = new LinkedList();
  
  /*link.addFirst("java01");
  link.addFirst("java02");
  link.addFirst("java03");
  link.addFirst("java04");*/
  
  link.addLast("java01");
  link.addLast("java02");
  link.addLast("java03");
  link.addLast("java04");
  sop(link);
  //
  //sop(link.getFirst());
  //sop(link.getFirst());
  //sop(link.getLast());
  //sop(link.removeFirst());
  //sop(link.removeFirst());
  sop(link);
  sop("size="+link.size());
  link.pollFirst();
  
  while(!link.isEmpty())
  {
   sop(link.removeFirst());
  }
  sop(link);
  
 }
 
 
 public static void sop(Object obj)
 {
  System.out.println(obj);
 }
}


 

package day14;

/*
 * 使用linkedlist模拟一个堆栈或者队列数据结构。
 *
 * 堆栈:先进后出。。如同一个杯子。  先进先出堆如杯,后来居上喝凉水。
 * 对列:先进先出 First in First out FIFO 如同一个水管。 先进先出列似管,一马当先抢饭碗。
 *
 * */

import java.util.*;

//队列
class Queue {
 private LinkedList link;
 
 Queue()
 {
  link = new LinkedList();
 }
 
 public void myAdd(Object obj)
 {
  link.addFirst(obj);
 }
 
 public Object myGet()
 {
  return link.removeLast();
 }
 
 public boolean isNull()
 {
  return link.isEmpty();
 }
}

public class LinkedListtest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  Queue que = new Queue();
  que.myAdd("java01");
  que.myAdd("java02");
  que.myAdd("java03");
  que.myAdd("java04");
  
  while(!que.isNull())
  {
  System.out.println(que.myGet());
  }
 }

}

 

package day14;

/*
 * 枚举就是Vector特有的取出方式。
 * 发现枚举和迭代器很像。
 * 其实枚举和迭代时一样的。
 *
 * 因为枚举的名称以及方法都过长。
 * 所以被迭代器取代了。
 * 枚举郁郁而终了。
 *
 *
 * */

import java.util.*;
public class VectorDemo {

 /**
  * @param args
  */
 public static void main(String[] args) {
  Vector v = new Vector();
  
  v.add("java01");
  v.add("java02");
  v.add("java03");
  v.add("java04");
  
  Enumeration en = v.elements();
  
  while(en.hasMoreElements())
  {
   System.out.println(en.nextElement());
  }

 }

}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值