《黑马程序员》 集合 collection、、Linklist、、Vector day14

来源:互联网 发布:蒋方舟写作水平知乎 编辑:程序博客网 时间:2024/06/05 20:40
------- android培训、java培训、期待与您交流! ----------

package 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());
  }

 }

}


 

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1岁宝宝胃胀气怎么办 孩子胃胀气还吐怎么办 肚子里进了凉气怎么办 肠胃涨气肚子变大怎么办 感觉肚子胀胀的怎么办 肚子胀撑的难受怎么办 肚子着凉了很疼怎么办 来月经肚子疼怎么办最快的方法 孕妇上大便有血怎么办 做完爱小腹坠痛怎么办 月经不来肚子胀怎么办 月经期间肚子疼的厉害怎么办 大姨吗来了肚子疼该怎么办 孕妇7个月拉肚子怎么办 胃疼肚子也疼怎么办 6个月孕妇肚子疼怎么办 孕妇4个月肚子疼怎么办 孕妇5个月拉肚子怎么办 4个月孕妇拉肚子怎么办 怀孕5个月拉肚子怎么办 肠胃老是胀气很不舒服怎么办 肚子里有气排不出来怎么办 小兔子不吃兔粮怎么办 泰迪肚子一直叫怎么办 狗狗肚子响该怎么办 狗狗肚子一直响怎么办 一刮风空调就响怎么办 胃里有气往上顶怎么办 胃里难受想吐怎么办 胃里感觉有水怎么办 喉咙总有气堵着怎么办 胃难受恶心想吐怎么办 胃里有气怎么办总放屁 肚子里有气很痛怎么办 胃有气排不出来怎么办 狗狗又吐又拉稀怎么办 狗吐了又拉稀怎么办 金毛狗又拉又吐怎么办 狗狗拉稀像水怎么办 狗狗拉稀带血怎么办 小狗狗又吐又拉怎么办