Collection的子接口(List接口-Vector类及Queue,子类Stack)

1.1Vector

Interface Enumeration<E>是接口

1.Vector与ArrayList相似,操作几乎一样,但是Vector是同步的。所以说Vector是使用数组实现的线程安全的列表

2.Vector在进行默认规则扩容时,新数组的长度=原始数组长度*2,也可以指定扩容长度;

3.创建对象的时候初始化长度为1

1.1.2

案例:

package List;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class VectorTest {
    public static void main(String[] args) {
        Vector<String> vector=new Vector<>();
        vector.add("jack");
        vector.add("jim");
        vector.add("luck");
        vector.add("jack");
//        //获取Enumeration接口对象  Enumerationn接口中定义了一些方法
//        通过这些方法可以枚举(一次获得一个)对象集合中的元素。
//        这种传统接口已被迭代器取代
//        Enumeration <String> elements=vector.elements();
//        while(elements.hasMoreElements()){
//            String s=elements.nextElement();
//            System.out.println(s);
        Iterator iterator=vector.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
        }
    }

说出ArrayList与Vector的区别?

相同点:ArrayList与Vector的底层都是由数组实现的。

不同点:1、ArrayList不同步,线程相对不安全,效率相对高;Vector同步的,线程相对安全,效率相对较低。

2、ArrayList是JDK1.2出现的。Vector是jdk1.0的时候出现的。

3、扩容方式:

ArrayList扩容方式:原来数组长度1.5倍 Vector扩容方式: 默认是原来数组长度的2倍

4、实现方法不同//这个不确定

1.2Stack

1.Stack继承自Vector,实现一个后进先出的堆栈

2.Stack提供5个额外的方法使得Vector得以被当作堆栈使用。

基本的push和pop 方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置

3.Stack刚创建后是空栈

package List;

import java.util.Iterator;
import java.util.Stack;

public class StackTest {
    public static void main(String[] args) {
        Stack<Integer> stack=new Stack<>();
        stack.add(2);
        //入栈
        stack.push(4);
        stack.push(10);
        System.out.println("---------stack.peek");
        //获取栈顶
        Integer stackUpElement=stack.peek();
        System.out.println(stackUpElement);

        //遍历栈
        Iterator<Integer> iterator=stack.iterator();
        while(iterator.hasNext()){
            Integer next=iterator.next();
            System.out.println(next);
        }
        Integer pop=stack.pop();
        System.out.println("===============弹出的栈顶");
        System.out.println(pop);
        System.out.println("===============stack.pop");
        //出栈,stack中少一个元素
        Iterator<Integer> iterator1=stack.iterator();
        while(iterator1.hasNext()){
            Integer next=iterator1.next();
            System.out.println(next);
        }
    }
}

1.3Queue

1.队列是一种先进先出的数据结构,元素在队列末尾添加,在队列头部删除。Queue接口扩展自Collection,并提供插入、提取、检验等操作

2.接口Deque,是一个扩展自Queue的双端队列,它支持在两端插入和删除元素,因为LinkedList类实现了Deque接口,所以通常我们可以使用LinkedList来创建一个队列。PriorityQueue类实现了一个优先队列,优先队列中元素被赋予优先级,拥有高优先级的先被删除

package List;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;

public class QueueTest {
    public static void main(String[] args) {
//        Deque extends Queue LinkedList实现Deque接口
        Queue <String> queue=new LinkedList<>();
        queue.offer("jack");//入队
        queue.offer("jim");//入队
        queue.offer("luck");//入队
//查看对头元素,并不删除对头元素
        System.out.println("queue.element():"+ queue.element());
        System.out.println("queue.element():"+ queue.element());
//查看对头元素,并不删除对头元素
        System.out.println("queue.peek():"+queue.peek());
        System.out.println("queue.peek():"+queue.peek());
        //poll 消除对头元素,返回消除的对头元素
        System.out.println("queue.p):"+queue.poll());
        //peek 查看
        System.out.println("queue.p):"+queue.peek());
        //remove 删除对头元素,返回删除的对头元素
        System.out.println("queue.remove):"+queue.remove());
        //peek 查看
        System.out.println("queue.p):"+queue.peek());
        System.out.println("queue.size):"+queue.size());

    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值