美文网首页
ArrayList|LinkList|栈和队列

ArrayList|LinkList|栈和队列

作者: 像天空的鸽子 | 来源:发表于2019-07-30 16:25 被阅读0次

    ArrayList

    ArrayList特点的原理.png

    集合的体系:
    ----------| Collection 单列集合的根接口
    ----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复。
    --------------------| ArrayList ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。
    什么时候使用ArrayList: 如果目前的数据是查询比较多,增删比较少的时候,那么就使用ArrayList存储这批数据。 比如 :高校的 图书馆

    --------------------| LinkedList
    --------------------| Vector(了解即可)

    ----------------| Set 如果实现了Set接口的集合类, 具备的特点: 无序,不可重复。

    ArrayList 特有的方法:

    ensureCapacity(int minCapaci上ty)
    trimToSize()

    笔试题目: 使用ArrayList无参的构造函数创建一个 对象时, 默认的容量是多少? 如果长度不够使用时又自增增长多少?
    ArrayList底层是维护了一个Object数组实现 的,使用无参构造函数时,Object数组默认的容量是10,当长度不够时,自动增长0.5倍。

    package cn.itcast.list;
    import java.util.ArrayList;
    public class Demo6 {
        public static void main(String[] args) {
            ArrayList list = new ArrayList();   
        }
    }
    

    LinkList

    LinkedList的实现原理.png

    集合的体系:
    ----------| Collection 单列集合的根接口
    ----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复。
    --------------------| ArrayList ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。
    什么时候使用ArrayList: 如果目前的数据是查询比较多,增删比较少的时候,那么就使用ArrayList存储这批数据。 比如 :高校的 图书馆

    --------------------| LinkedList LinkedList底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。

    --------------------| Vector(了解即可)

    ----------------| Set 如果实现了Set接口的集合类, 具备的特点: 无序,不可重复。

    Linkedlist特有的方法:
    1:方法介绍
    addFirst(E e)
    addLast(E e)

    getFirst()
    getLast()

    removeFirst()
    removeLast()

    2:数据结构

    • 1:栈 (1.6) : 主要是用于实现堆栈数据结构的存储方式。
      先进后出
      push()
      pop()

    • 2:队列(双端队列1.5): 主要是为了让你们可以使用LinkedList模拟队列数据结构的存储方式。
      先进先出
      offer()
      poll()

    • 3:返回逆序的迭代器对象
      descendingIterator() 返回逆序的迭代器对象

    package cn.itcast.list;
    
    import java.util.Iterator;
    import java.util.LinkedList;
    public class Demo8 {
        
        public static void main(String[] args) {
            LinkedList list= new LinkedList();
            list.add("张三");
            list.add("李四");
            list.add("王五");
    
            list.addFirst("狗娃"); //把元素添加到集合的首位置上。
            list.addLast("狗剩");  //把元素添加到集合的末尾处。
            
    
            System.out.println("获取集合中首位置的元素:"+list.getFirst());
            System.out.println("获取集合中末尾的元素:"+ list.getLast());
        
            System.out.println("删除集合中的首位置元素并返回:"+ list.removeFirst());
            System.out.println("删除集合中的末尾素并返回:"+ list.removeLast());
                
            
            list.push("狗娃");   //将该元素插入此集合的开头处。 
            System.out.println("删除集合的首元素:"+list.pop()); // 移除并返回集合中的第一个元素 
    
            
            list.offer("狗剩");
            System.out.println("删除集合的首元素: "+list.poll());
        
            System.out.println("集合中的元素:"+ list);
        
            Iterator  it = list.descendingIterator();
            while(it.hasNext()){
                System.out.println(it.next());
            }
            
            
        }
    
    }
    

    栈和队列

    堆栈、队列数据结构的特点.png
    • 1:栈 (1.6) : 主要是用于实现堆栈数据结构的存储方式。
      先进后出
      push()
      pop()
    • 2:队列(双端队列1.5): 主要是为了让你们可以使用LinkedList模拟队列数据结构的存储方式。
      先进先出
      offer()
      poll()

    机试题目: 使用LinkedList实现堆栈数据结构的存储方式与队列的数据结构存储方式。

    package cn.itcast.list;
    
    import java.util.LinkedList;
    
    // 使用LinkedList模拟堆栈的数据结构存储方式
    class StackList{
        
        LinkedList list;
        
        public StackList(){
            list = new LinkedList();
        }
        
        //进栈
        public void add(Object o){
            list.push(o);
        }
        
        //弹栈 : 把元素删除并返回。
        public Object pop(){
            return list.pop();
        } 
        
        //获取元素个数
        public int size(){
            return list.size();
        }
        
    }
    
    //使用LinkedList模拟队列的存储方式
    class TeamList{
        
        LinkedList list;
        
        public TeamList(){
            list = new LinkedList();
        }
        
        public void add(Object o){
            list.offer(o);
        }
        
        public Object remove(){
            return list.poll();
        }
        
        //获取元素个数
        public int size(){
            return list.size();
        }
        
    }
    
    public class Demo9 {
        
        public static void main(String[] args) {
            TeamList list=  new TeamList();
            list.add("李嘉诚");
            list.add("马云");
            list.add("王健林");
            
            int size = list.size();
            for(int i = 0 ; i<size ; i++){
                System.out.println(list.remove());
            }
            
            
        }
    }
    

    相关文章

      网友评论

          本文标题:ArrayList|LinkList|栈和队列

          本文链接:https://www.haomeiwen.com/subject/vshnrctx.html