学java第五天

到线性表。先搞这个迭代器,大概是这样的一个使用例子

import java.util.ArrayList;  
import java.util.Iterator;  
import java.util.List;  
public class IteratorExample {  
    public static void main(String[] args) {  
        List<String> list = new ArrayList<>();  
        list.add("Apple");  
        list.add("Banana");  
        list.add("Cherry");  
        Iterator<String> it = list.iterator();  
        while (it.hasNext()) {  
            String fruit = it.next();  
            System.out.println(fruit);  
        }  
    }  
}

线性表的理解就是数列,先从顺序表开始

线性表大概的代码(截下来的)

List<Integer> arrayList= new ArrayList<>();

arrayList.add(1);

arrayList.add(2);

arrayList.add(3);

arrayList.add(1);

arrayList.add(10);

arrayList.add(4);

arrayList.add(0,10);

arrayList.add(3,30);

System.out.println(arrayList);

LinkedList<Object> linkedList=new LinkedList<Object>(arrayList);

linkedList.removeLast();

linkedList.addFirst("Green");

ListIterator<Object> listIterator = linkedList.listIterator();

while(listIterator.hasNext()) {

System.out.println(listIterator.next());

}

System.out.println("\n");

listIterator= linkedList.listIterator(linkedList.size());

while(listIterator.hasPrevious()) {

System.out.println(listIterator.previous());

}}

中间还有一堆方法 稍微过了下后面有链表 先跳过后面学

然后过栈、队列和优先队列

搬了一下这三个东西的概念跟区别。

栈(Stack)

概念解释

栈是一种遵循后进先出(LIFO, Last In First Out)原则的数据结构。它只允许在栈顶进行添加(push)或删除(pop)元素的操作。栈是一种运算受限的线性表,其限制是仅允许在表的一端(称为栈顶)进行插入和删除运算。栈的应用场景广泛,如函数调用、递归实现、括号问题的求解、深度优先搜索遍历等。

核心特点

  • 后进先出(LIFO)
  • 只能在栈顶进行插入和删除操作
  • 可以通过顺序表(如数组)或链表实现

队列(Queue)

概念解释

队列是一种遵循先进先出(FIFO, First In First Out)原则的数据结构。它允许在队列的一端(称为队尾)进行插入操作,在另一端(称为队首)进行删除操作。队列的应用场景包括计算机系统中各种资源的管理、消息缓冲器的管理,以及广度优先遍历等。

核心特点

  • 先进先出(FIFO)
  • 只能在队尾插入元素,在队首删除元素
  • 可以通过顺序表(如数组)或链表实现

优先队列(Priority Queue)

概念解释

优先队列是一种特殊的队列,其中的元素按照优先级顺序进行排序。与普通队列不同,优先队列中的元素并不是按照它们进入队列的顺序进行处理,而是根据优先级来确定处理顺序。优先队列常用于任务调度、最短路径算法、堆排序等场景。

核心特点

  • 元素按照优先级顺序进行排序
  • 插入元素时,根据优先级确定其在队列中的位置
  • 删除元素时,移除并返回优先级最高的元素
  • 常用的实现方式包括使用堆(Heap)数据结构

栈、队列和优先队列之间的区别

栈(Stack)队列(Queue)优先队列(Priority Queue)
操作原则后进先出(LIFO)先进先出(FIFO)按优先级排序
插入位置栈顶队尾根据优先级确定
删除位置栈顶队首优先级最高处
应用场景函数调用、递归、括号匹配等资源管理、消息缓冲、广度优先遍历等任务调度、最短路径算法、堆排序等
实现方式顺序表(数组)、链表顺序表(数组)、链表堆(二叉堆等)

import java.util.Deque;  
import java.util.ArrayDeque;  

//栈
public class StackExample {  
    public static void main(String[] args) {  
        Deque<Integer> stack = new ArrayDeque<>();  
        // 入栈  
        stack.push(1);  
        stack.push(2);  
        stack.push(3);  
        // 查看栈顶元素  
        System.out.println("栈顶元素: " + stack.peek());  
        // 出栈  
        while (!stack.isEmpty()) {  
            System.out.println(stack.pop());  
        }  
    }  
}

import java.util.Queue;  
import java.util.LinkedList;  
  //队列
public class QueueExample {  
    public static void main(String[] args) {  
        Queue<Integer> queue = new LinkedList<>();  
        queue.offer(1);  
        queue.offer(2);  
        queue.offer(3);  
         System.out.println("队首元素: " + queue.peek());  
        while (!queue.isEmpty()) {  
            System.out.println(queue.poll());  
        }  
    }  
}

import java.util.PriorityQueue;  
  //优先队列
public class PriorityQueueExample {  
    public static void main(String[] args) {  
        PriorityQueue<Integer> pq = new PriorityQueue<>();  
  
        // 添加元素  
        pq.offer(3);  
        pq.offer(1);  
        pq.offer(2);  
  
        // 移除并返回队列头部的元素
        while (!pq.isEmpty()) {  
            System.out.println(pq.poll());  
        }  
        PriorityQueue<String> pqWithCustomComparator = new PriorityQueue<>((s1, s2) -> s2.compareTo(s1));  
        pqWithCustomComparator.offer("Banana");  
        pqWithCustomComparator.offer("Apple");  
        pqWithCustomComparator.offer("Cherry");  
        while (!pqWithCustomComparator.isEmpty()) {  
            System.out.println(pqWithCustomComparator.poll());  
        }  
    }  
}内容有点多稍微消化会。保持学习&&更新ing。。。

  • 25
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值