Day15

本文介绍了Java中的多种数据结构相关知识。包括LinkedList类的双向链表结构、构造方法和常用方法;List接口的抽象方法;迭代器的定义与使用;Stack栈的先进后出特点、构造方法和方法;Queue队列的先进先出特点及方法;还提及了内部类的定义与分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Day15
一、LinkedList类:
1)表示双向链表,每个节点有三部分组成:前驱、结点值、后继。 2)构造方法:
(1)LinkedList():构造一个空列表。
( 2)LinkedList(Collection<? extends E> c):构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列。
3)方法:
(1)add(E e):将指定元素添加到此列表的结尾。
(2)add(int index, E element):在此列表中指定的位置插入指定的元素。
(3)addAll(Collection<? extends E> c):添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。
(4)addFirst(E e):将指定元素插入此列表的开头。
(5)addLast(E e):将指定元素添加到此列表的结尾。
(6)clear():从此列表中移除所有元素。
(7)contains(Object o):如果此列表包含指定元素,则返回 true。(8)get(int index):返回此列表中指定位置处的元素。
(9)getFirst():返回此列表的第一个元素。
(10)getLast():返回此列表的最后一个元素。
(11)indexOf(Object o):返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
(12) lastIndexOf(Object o):返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
(13)peek():获取但不移除此列表的头(第一个元素)。
(14)remove():获取并移除此列表的头(第一个元素)。
(15)remove(int index):移除此列表中指定位置处的元素。
(16)remove(Object o):从此列表中移除首次出现的指定元素(如果存在)。
(17)removeFirst ():移除并返回此列表的第一个元素。
(18)removeLast():移除并返回此列表的最后一个元素。
(19)size():返回此列表的元素数
。二、List底层
List为接口,其中的方法全部为抽象方法,不能创建对象。
方法:
(1)add(E e):将指定元素添加到此列表的结尾。
(2)add(int index, E element):在此列表中指定的位置插入指定的元素。
(3)addAll(Collection<? extends E> c):添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。
(4)contains(Object o):如果此列表包含指定元素,则返回 true。(5)clear():从此列表中移除所有元素。
(6)get(int index):返回此列表中指定位置处的元素。
(7)indexOf(Object o):返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
(8)isEmpty():如果列表不包含元素,则返回 true。
(9)remove(int index):移除此列表中指定位置处的元素。
(10)remove(Object o):从此列表中移除首次出现的指定元素(如果存在)。
(11) size():返回此列表的元素数。等等基本方法。
三、迭代器定义:是一种检查容器内元素并且遍历元素的数据类型。
例如: Iterator iter = a.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
四、Stack(栈)
特点:先进后出(LIFO)
构造方法:Stack(): 创建一个空堆栈。
方法:
(1)empty():测试堆栈是否为空。
(2)peek():查看堆栈顶部的对象,但不从堆栈中移除它。
(3)pop():移除堆栈顶部的对象,并作为此函数的值返回该对象。(4)push(E item):把项压入堆栈顶部。
(5)search(Object o):返回对象在堆栈中的位置,以 1 为基数。 五、Queue(队列)(接口)
特点:先进先出
方法:
(1)add(E e):将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。
(2)poll():获取并移除此队列的头,如果此队列为空,则返回 null。
(3)peek():获取并移除此队列的头。 等等方法。
六、内部类
定义:一个类中的类。
分类:
(1)静态内部类
(2) 常规内部类
(3) 局部内部类
(4) 匿名类

### 黑马 Java Day 15 课程资料与教程 #### 一、多线程编程基础 在黑马程序员Java培训的第15天,重点讲解了多线程的基础概念及其创建方式。Java中的线程是程序执行流的最小单位,在现代操作系统中可以并发运行多个线程来提高效率[^4]。 对于线程的创建有两种主要方法:继承`Thread`类重写其`run()`方法;实现`Runnable`接口同样需要定义该方法并由外部传入到`Thread`实例中启动新线程。这两种方式各有优劣,前者更直观但可能造成单继承局限性;后者则更加灵活适用于资源共享场景[^4]。 ```java // 继承 Thread 类的方式 class MyThread extends Thread { public void run() { System.out.println("This is a thread by extending Thread class."); } } // 实现 Runnable 接口的方式 class MyRunnable implements Runnable { @Override public void run() { System.out.println("This is a thread by implementing Runnable interface."); } } ``` #### 二、线程同步机制 当涉及到共享资源访问时,为了防止数据竞争条件的发生,引入了锁的概念用于控制同一时刻只有一个线程能够操作特定区域内的代码——即所谓的临界区。可以通过`synchronized`关键字修饰方法或语句块达到此目的[^4]。 ```java public synchronized void criticalSectionMethod(){ // 只有一个线程能进入这段代码 } ``` 或者使用显式的对象监视器: ```java Object lock = new Object(); synchronize(lock){ // 同步代码块 } ``` #### 三、高级特性介绍 除了基本的操作外,还探讨了一些更为复杂的主题如守护进程(daemon threads),它们通常作为服务提供者存在而不参与应用程序的主要逻辑流程;以及如何通过`join()`函数等待其他线程完成工作后再继续执行当前线程的任务等实用技巧[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值