Java编程之LinkedList+Vector+Stack+Queue

简介: Vector类 1.java.util包 2.是ArrayList集合的早期版本 (StringBuffer早期 StringBuilder后来) Vector底层也是利用(动态)数组的形式存储 Vector是线程同步的(synchronized) 安全性高 效率低 3.扩容方式与ArrayList不同 默认是扩容2倍 可以通过构造方法创建对象时修改这一机制 4.构造方法 5.常用方法Stack类 栈 1.java.util包 2.构造方法只有一个无参数 3.除了继承自Vacton类

知识回顾

   集合

   集合是用来存储一组元素----容器   与数组类似

   数组创建后长度不可以再次改变  

   集合创建后长度是可以改变

   (数据结构 Array  Linked  Hash  Tree)

集合的分支体系

   Collection  Map

   以value形式存储  以key-value形式存储

   List     Set      Queue

   有序可重复    无序无重复 key无序无重复  value无序可以重复

java.util包

   ArrayList

   1.底层是利用(动态)数组形式实现 1.5

   2.ArrayList特点适合遍历轮询   不适合插入删除

   3.如何构建一个ArrayList对象

    无参数构造方法    带默认容量构造方法

   4.ArrayList中常用的方法

   增删改查    add(E e)  remove(index)  

   set(index value)  get(index)   size()

   类中其他常用的方法

   addAll并集   removeAll差集   ratainAll交集

   indexOf()  lastIndexOf()  contains()  List=subList()

   isEmpty()  clear()   ensureCapacity()  iterator();迭代器

   toArray(T[] x);  trimToSize();

   5.泛型

用来规定数据类型

注意:  泛型  造型

在类或接口描述的时候  可以使用某种符号来表示一个未知的类型

在类型使用的时候  需要一个具体类型来代替

注意:  泛型需要使用引用数据类型来代替

1.泛型类  2.泛型接口  3.泛型方法  4.方法参数泛型限制  

List

Vector类

   1.java.util包

   2.是ArrayList集合的早期版本 (StringBuffer早期  StringBuilder后来)

    Vector底层也是利用(动态)数组的形式存储

    Vector是线程同步的(synchronized)  安全性高  效率低

   3.扩容方式与ArrayList不同

    默认是扩容2倍   可以通过构造方法创建对象时修改这一机制

   4.构造方法

   5.常用方法

Stack类    栈

   1.java.util包

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

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

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

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

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

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

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

   4.中国象棋   悔棋

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

    撤销功能

Queue接口

   1.java.util  通常子类LinkedList   ArrayDeque

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

   3.一般方法

add()

element()---->get()

remove()

boolean = offer(E e);//相当于add 不会抛出异常

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

E = poll();剪短//  相当于remove()

   4.双十一零点秒杀

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

ArrayList

   LinkedList类

   1.java.util包 自己封装过LinkedBox   内部类Node<T>对象(节点 prev item next)

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

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

   3.构建对象

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

   4.常用的方法

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

    手册中提供的其他常用方法

    addAll   addFist   addLast()  clear()  contains()

    element()  getFirst()  getLast()  indexOf()  lastIndex()

    .....

   5.插入删除的特性是否像想的那样

    对比ArrayList  Linked

目录
相关文章
|
23天前
|
Java 程序员
Java编程中的异常处理:从基础到高级
在Java的世界中,异常处理是代码健壮性的守护神。本文将带你从异常的基本概念出发,逐步深入到高级用法,探索如何优雅地处理程序中的错误和异常情况。通过实际案例,我们将一起学习如何编写更可靠、更易于维护的Java代码。准备好了吗?让我们一起踏上这段旅程,解锁Java异常处理的秘密!
|
3天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
7天前
|
算法 Java 调度
java并发编程中Monitor里的waitSet和EntryList都是做什么的
在Java并发编程中,Monitor内部包含两个重要队列:等待集(Wait Set)和入口列表(Entry List)。Wait Set用于线程的条件等待和协作,线程调用`wait()`后进入此集合,通过`notify()`或`notifyAll()`唤醒。Entry List则管理锁的竞争,未能获取锁的线程在此排队,等待锁释放后重新竞争。理解两者区别有助于设计高效的多线程程序。 - **Wait Set**:线程调用`wait()`后进入,等待条件满足被唤醒,需重新竞争锁。 - **Entry List**:多个线程竞争锁时,未获锁的线程在此排队,等待锁释放后获取锁继续执行。
35 12
|
3天前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
41 2
|
27天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
26天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
20天前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
20天前
|
Java 调度
Java中的多线程编程与并发控制
本文深入探讨了Java编程语言中多线程编程的基础知识和并发控制机制。文章首先介绍了多线程的基本概念,包括线程的定义、生命周期以及在Java中创建和管理线程的方法。接着,详细讲解了Java提供的同步机制,如synchronized关键字、wait()和notify()方法等,以及如何通过这些机制实现线程间的协调与通信。最后,本文还讨论了一些常见的并发问题,例如死锁、竞态条件等,并提供了相应的解决策略。
43 3
|
25天前
|
开发框架 安全 Java
Java 反射机制:动态编程的强大利器
Java反射机制允许程序在运行时检查类、接口、字段和方法的信息,并能操作对象。它提供了一种动态编程的方式,使得代码更加灵活,能够适应未知的或变化的需求,是开发框架和库的重要工具。
40 2
|
26天前
|
安全 Java 开发者
Java中的多线程编程:从基础到实践
本文深入探讨了Java多线程编程的核心概念和实践技巧,旨在帮助读者理解多线程的工作原理,掌握线程的创建、管理和同步机制。通过具体示例和最佳实践,本文展示了如何在Java应用中有效地利用多线程技术,提高程序性能和响应速度。
59 1