• java集合 Vector类 Stack类 Queue接口


     

     

     -----------------------------------------------------------------------------

     Stack类 栈 ;继承 Vector

    1.java.util包

    2.构造方法 只有一个无参数的

    3.除了继承自Vector类的方法外还有几个特殊的方法

      push()将某一个元素压入栈顶(同add())

      E=pop()将某一个元素从栈顶取出并删掉(E=remove())

      E=peek()查看栈顶的一个元素 不删除(get());

      boolean = empty()判断栈内元素是否为空(isEmpty());

      int=search() 查找给定的元素在栈中的位置(indexOf())

    4.使用场景 中国象棋 悔棋 

      栈中存储每一次操作的步骤

      撤销

     --------------------------------------------------------------------------------------------------------------------

    Queue接口

    1.java.util      通常使用子类 LinkedList  ArrayDeque

    2.通常无参数构造方法创建

    3.一般方法

      boolean = offer(E e)   (类似add())

      element()  (类似get())

      remove()

      E=poll(); (相当于remove())

      E=peek(); (相当于element方法)

    4.使用场景  双11秒杀

      所有进入秒杀系统的人存入队列

     

     -------------------------------------------------------------------------------------------------------------------

    LinkedList类

    是List的子类   是Queue的子类

    1.java.util包  (类似于之前我们封装过的双向链表)

    2.底层使用双向链表的数据结构形式来存储

      适合于插入或删除  不适合遍历轮询

    3.构建对象

      无参数构造方法  带参数的构造方法(collection)

    4.常用的方法

      增删改查  add()  remove()  set()  get()  size()        offer  poll  peek

      addAll()  addFist()  addLast()  clear()  contains()   element()

      getFirst()  getLast()    

    import java.util.*;
    
    public class Test0521{
    	public static void main(String[] args){
    		
    		ArrayList<String> a=new ArrayList<String>();
    		for(int i=1;i<=100000;i++){
    			//a.add("a");//追加7ms
    			a.add(0,"a");//插入元素 //1150ms //扩容并搬元素到新数组
    		}
    		long time1=System.currentTimeMillis();
    		//for(String v:a){			
    		//}//取元素 3ms
    		for(int i=0;i<100000;i++);{
    			a.remove(0);
    		}//1ms
    		long time2=System.currentTimeMillis();		
    		System.out.println(time2-time1);
    		
    		/*
    		LinkedList<String> b=new LinkedList<String>();
    		for(int i=1;i<=100000;i++){
    			//b.addLast("a");//6ms
    			b.addFirst("a");//6ms
    		}
    		long time1=System.currentTimeMillis();
    		
    		for(int i=0;i<b.size();i++){
    			b.get(i);//4323ms
    		}
    		
    		for(String v:b){
    		}//5ms
    		
    		for(int i=0;i<b.size();i++){
    			b.remove(0);//3ms
    		}
    		long time2=System.currentTimeMillis();
    		System.out.println(time2 - time1);
    		*/
    		
    	}
    }
    

      

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    asm createdisk时提示没有权限
    webkit 模拟点击 winform
    .net中的反射(转载)
    wpf——三维学习1
    3dmax导出到blend或者vs中
    地理坐标系与投影坐标系
    Arcgis与CityEngine安装破解
    忘记Windows7登陆密码解决办法
    wpf的UserControl用户控件怎么添加到Window窗体中
    postgres索引创建、 存储过程的创建以及在c#中的调用
  • 原文地址:https://www.cnblogs.com/canglongdao/p/12933503.html
Copyright © 2020-2023  润新知