欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 面试实战题:手写一个队列和介绍Stream流怎么使用

面试实战题:手写一个队列和介绍Stream流怎么使用

2025/2/23 7:20:51 来源:https://blog.csdn.net/LUCIAZZZ/article/details/145612495  浏览:    关键词:面试实战题:手写一个队列和介绍Stream流怎么使用

手写一个队列

思路解析:

队列要有入队和出队操作,还要有查看队列大小,查看队头元素,查看队列是否为空,查看队列是否满了这些功能

package com.example.transational.MyQueue;public class MyQueue<T> {private Object[] elements; // 存储队列元素的数组private int front;         // 队头指针private int rear;          // 队尾指针private int size;          // 队列当前大小private int capacity;      // 队列容量// 构造函数,初始化队列public MyQueue(int capacity) {this.capacity = capacity;this.elements = new Object[capacity];this.front = 0;this.rear = -1;this.size = 0;}// 入队操作public boolean enqueue(T item) {if (isFull()) {System.out.println("Queue is full, cannot enqueue.");return false;}rear = (rear + 1) % capacity; // 循环队列,防止越界elements[rear] = item;size++;return true;}// 出队操作public T dequeue() {if (isEmpty()) {System.out.println("Queue is empty, cannot dequeue.");return null;}T item = (T) elements[front];front = (front + 1) % capacity; // 循环队列,防止越界size--;return item;}// 查看队头元素public T peek() {if (isEmpty()) {System.out.println("Queue is empty, nothing to peek.");return null;}return (T) elements[front];}// 判断队列是否为空public boolean isEmpty() {return size == 0;}// 判断队列是否已满public boolean isFull() {return size == capacity;}// 获取队列当前大小public int size() {return size;}// 测试队列public static void main(String[] args) {MyQueue<Integer> queue = new MyQueue<>(5);queue.enqueue(1);queue.enqueue(2);queue.enqueue(3);queue.enqueue(4);queue.enqueue(5);System.out.println("Dequeue: " + queue.dequeue()); // 输出 1System.out.println("Dequeue: " + queue.dequeue()); // 输出 2queue.enqueue(6);queue.enqueue(7); // 队列已满,无法入队System.out.println("Peek: " + queue.peek()); // 输出 3}
}

Stream流的使用案例

filter过滤,collect收集

package com.example.transational.StreamTest;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class StreamExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// 过滤出偶数并收集到新列表List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0) // 过滤条件.collect(Collectors.toList()); // 收集结果System.out.println("Even numbers: " + evenNumbers);}
}

sorted排序,limit限制返回数量

package com.example.transational.StreamTest;import java.util.Arrays;
import java.util.List;public class StreamExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(5, 3, 9, 1, 7, 2, 8, 4, 6);// 排序并取前 3 个元素numbers.stream().sorted() // 自然排序.limit(3) // 限制数量.forEach(System.out::println); // 遍历打印}
}

group分组

package com.example.transational.StreamTest;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;public class StreamExample {public static void main(String[] args) {List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");// 按字符串长度分组Map<Integer, List<String>> groupedByLength = words.stream().collect(Collectors.groupingBy(String::length)); // 分组操作System.out.println("Grouped by length: " + groupedByLength);}
}

distinct去重

package com.example.transational.StreamTest;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class StreamExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);// 去重操作List<Integer> distinctNumbers = numbers.stream().distinct() // 去重.collect(Collectors.toList()); // 收集结果System.out.println("Distinct numbers: " + distinctNumbers);}
}

map转换操作

将字符转换为大写

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class MapExample {public static void main(String[] args) {List<String> words = Arrays.asList("java", "stream", "example", "hello");// 将每个字符串转换为大写List<String> upperCaseWords = words.stream().map(String::toUpperCase) // 使用方法引用.collect(Collectors.toList());System.out.println("Uppercase words: " + upperCaseWords);}
}

将整数列表中的每个元素

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class MapExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);// 将每个元素平方List<Integer> squares = numbers.stream().map(n -> n * n) // 使用 Lambda 表达式.collect(Collectors.toList());System.out.println("Squares: " + squares);}
}

将字符串列表转换为长度列表

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class MapExample {public static void main(String[] args) {List<String> words = Arrays.asList("apple", "banana", "cherry", "date");// 将每个字符串转换为其长度List<Integer> lengths = words.stream().map(String::length) // 使用方法引用.collect(Collectors.toList());System.out.println("Lengths: " + lengths);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词