Java 8 中 20 个高频面试题及答案

在这里插入图片描述
在这里插入图片描述

文章目录

    • 前言
    • 20 道高频题
      • 问题 1:给定一个整数列表,使用 Stream 函数找出列表中所有的偶数?
      • 问题 2:给定一个整数列表,使用 Stream 函数找出所有以 1 开头的数字?
      • 问题 3:如何使用 Stream 函数在给定的整数列表中找到重复元素?
      • 问题4:给定一个整数列表,使用 Stream 函数找出列表中的第一个元素?
      • 问题5:给定一个整数列表,使用 Stream 函数计算列表中元素的总数?
      • 问题 6:给定一个整数列表,使用 Stream 函数找出其中的最大值?
      • 问题 7:给定一个字符串,使用 Stream 函数找出其中第一个不重复的字符?
      • 问题 8:给定一个字符串,使用 Stream 函数找出其中第一个重复的字符?
      • 问题 9:给定一个整数列表,使用 Stream 函数对列表中的值进行排序?
      • 问题 10:给定一个整数列表,使用 Stream 函数按降序排序列表中的值?
      • 问题 11:给定一个整数数组 nums,如果数组中任何值至少出现两次则返回 true,如果每个元素都不同则返回 false?
      • 问题 12:如何使用 Java 8 Date 和 Time API 获取当前日期和时间?
      • 问题 13:如何使用 Stream 函数将一个字符串列表连接成一个单独的字符串?
      • 问题 14:给定一个字符串数组,使用 Stream 函数找出其中最长的字符串?
      • 问题 15:如何使用 Stream 函数将一个数字列表转换为它们的平方数列表?
      • 问题 16:如何使用 Stream 函数计算整数列表的平均值?
      • 问题 17:如何使用 Stream 函数找出字符串列表中所有不为空且长度大于 3 的字符串?
      • 问题 18:如何使用 Stream 函数找出字符串列表中最长的字符串的长度?
      • 问题 19:如何使用 Stream 函数对字符串列表进行排序并转换为大写?
      • 问题 20:如何使用 Stream 函数将一个整数列表中的所有元素翻倍?
    • 结语

前言

自 Java 8 发布以来已经过去了 8 年,Java 8 引入了许多新特性,‌包括改进的日期和时间 API、‌Lambda 表达式、‌方法引用、‌默认方法、‌以及 Nashorn JavaScript 引擎等。‌这些新特性不仅增强了 Java 的开发效率和功能性,‌也为面试中的 Java 8 相关问题提供了丰富的素材。‌

在本教程中,我将分享 20 个顶级的 Java 8 编码和编程面试题及答案。我只使用了 Stream API 函数来解决以下问题。

这些问题的答案涵盖了 Java 8 中的一些核心特性和改进,‌对于理解 Java 8 的新特性和如何使用它们非常有帮助

20 道高频题

问题 1:给定一个整数列表,使用 Stream 函数找出列表中所有的偶数?

Java 8 中的 Stream API 提供了一种简洁且高效的方法来处理集合数据。以下是解决这个问题的代码示例:

import java.util.*;
import java.util.stream.*;public class EvenNumber {public static void main(String args[]) {List<Integer> list = Arrays.asList(10, 15, 8, 49, 25, 98, 32);list.stream().filter(n -> n % 2 == 0).forEach(System.out::println);}
}

输出:

10, 8, 98, 32

问题 2:给定一个整数列表,使用 Stream 函数找出所有以 1 开头的数字?

通过 Stream API,可以很容易地找到以特定数字开头的元素。以下是代码示例:

import java.util.*;
import java.util.stream.*;public class NumberStartingWithOne {public static void main(String args[]) {List<Integer> myList = Arrays.asList(10, 15, 8, 49, 25, 98, 32);myList.stream().map(s -> s + "") // 将整数转换为字符串.filter(s -> s.startsWith("1")).forEach(System.out::println);}
}

输出:

10, 15

问题 3:如何使用 Stream 函数在给定的整数列表中找到重复元素?

利用 Stream API,我们可以轻松找到列表中的重复元素。以下是两种方法:

方法1:

import java.util.*;
import java.util.stream.*;public class DuplicateElements {public static void main(String args[]) {List<Integer> myList = Arrays.asList(10, 15, 8, 49, 25, 98, 98, 32, 15);Set<Integer> set = new HashSet<>();myList.stream().filter(n -> !set.add(n)).forEach(System.out::println);}
}

输出:

98, 15

方法2:使用 distinct() 关键字

public static void getDataWithoutDuplicates() {List<Integer> myList = Arrays.asList(1, 1, 85, 6, 2, 3, 65, 6, 45, 45, 5662, 2582, 2, 2, 266, 666, 656);myList.stream().distinct().forEach(noDuplicateData -> System.out.println(noDuplicateData));
}

输出:

1, 85, 6, 2, 3, 65, 45, 5662, 2582, 266, 666, 656

问题4:给定一个整数列表,使用 Stream 函数找出列表中的第一个元素?

import java.util.*;
import java.util.stream.*;public class FindFirstElement {public static void main(String args[]) {List<Integer> myList = Arrays.asList(10, 15, 8, 49, 25, 98, 98, 32, 15);myList.stream().findFirst().ifPresent(System.out::println);}
}

输出:

10

问题5:给定一个整数列表,使用 Stream 函数计算列表中元素的总数?

import java.util.*;
import java.util.stream.*;public class FindTheTotalNumberOfElements {public static void main(String args[]) {List<Integer> myList = Arrays.asList(10, 15, 8, 49, 25, 98, 98, 32, 15);long count = myList.stream().count();System.out.println(count);}
}

输出:

9

问题 6:给定一个整数列表,使用 Stream 函数找出其中的最大值?

import java.util.*;
import java.util.stream.*;public class FindMaxElement {public static void main(String args[]) {List<Integer> myList = Arrays.asList(10, 15, 8, 49, 25, 98, 98, 32, 15);int max = myList.stream().max(Integer::compare).get();System.out.println(max);}
}

输出:

98

问题 7:给定一个字符串,使用 Stream 函数找出其中第一个不重复的字符?

import java.util.*;
import java.util.stream.*;
import java.util.function.Function;public class FirstNonRepeated {public static void main(String args[]) {String input = "Java articles are Awesome";Character result = input.chars() // 字符串流.mapToObj(s -> Character.toLowerCase(Character.valueOf((char) s))) // 首先转换为Character对象,然后转换为小写.collect(Collectors.groupingBy(Function.identity(), LinkedHashMap::new, Collectors.counting())) // 存储字符及其计数.entrySet().stream().filter(entry -> entry.getValue() == 1L).map(entry -> entry.getKey()).findFirst().get();System.out.println(result);}
}

输出:

j

问题 8:给定一个字符串,使用 Stream 函数找出其中第一个重复的字符?

import java.util.*;
import java.util.stream.*;
import java.util.function.Function;public class FirstRepeated {public static void main(String args[]) {String input = "Java Articles are Awesome";Character result = input.chars() // 字符串流.mapToObj(s -> Character.toLowerCase(Character.valueOf((char) s))) // 首先转换为Character对象,然后转换为小写.collect(Collectors.groupingBy(Function.identity(), LinkedHashMap::new, Collectors.counting())) // 存储字符及其计数.entrySet().stream().filter(entry -> entry.getValue() > 1L).map(entry -> entry.getKey()).findFirst().get();System.out.println(result);}
}

输出:

a

问题 9:给定一个整数列表,使用 Stream 函数对列表中的值进行排序?

import java.util.*;
import java.util.stream.*;
import java.util.function.Function;public class SortValues {public static void main(String args[]) {List<Integer> myList = Arrays.asList(10, 15, 8, 49, 25, 98, 98, 32, 15);myList.stream().sorted().forEach(System.out::println);}
}

输出:

8
10
15
15
25
32
49
98
98

问题 10:给定一个整数列表,使用 Stream 函数按降序排序列表中的值?

import java.util.*;
import java.util.stream.*;
import java.util.function.Function;public class SortDescending {public static void main(String args[]) {List<Integer> myList = Arrays.asList(10, 15, 8, 49, 25, 98, 98, 32, 15);myList.stream().sorted(Collections.reverseOrder()).forEach(System.out::println);}
}

输出:

98
98
49
32
25
15
15
10
8

问题 11:给定一个整数数组 nums,如果数组中任何值至少出现两次则返回 true,如果每个元素都不同则返回 false?

public boolean containsDuplicate(int[] nums) {List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());Set<Integer> set = new HashSet<>(list);return set.size() != list.size();
}

输入:

nums = [1,2,3,1]

输出:

true

输入:

nums = [1,2,3,4]

输出:

false

问题 12:如何使用 Java 8 Date 和 Time API 获取当前日期和时间?

class Java8 {public static void main(String[] args) {System.out.println("Current Local Date: " + java.time.LocalDate.now());// 使用LocalDate API获取日期System.out.println("Current Local Time: " + java.time.LocalTime.now());// 使用LocalTime API获取时间System.out.println("Current Local Date and Time: " + java.time.LocalDateTime.now());//```java// 使用LocalDateTime API获取日期和时间System.out.println("Current Instant: " + java.time.Instant.now());// 使用Instant获取时间戳}
}

输出:

Current Local Date: 2024-07-22
Current Local Time: 12:34:56.789
Current Local Date and Time: 2024-07-22T12:34:56.789
Current Instant: 2024-07-22T04:34:56.789Z

问题 13:如何使用 Stream 函数将一个字符串列表连接成一个单独的字符串?

import java.util.*;
import java.util.stream.*;public class JoinStrings {public static void main(String args[]) {List<String> list = Arrays.asList("Java", "is", "fun");String result = list.stream().collect(Collectors.joining(" "));System.out.println(result);}
}

输出:

Java is fun

问题 14:给定一个字符串数组,使用 Stream 函数找出其中最长的字符串?

import java.util.*;
import java.util.stream.*;public class LongestString {public static void main(String args[]) {String[] words = {"Java", "Stream", "API", "Programming", "Language"};String longest = Arrays.stream(words).max(Comparator.comparingInt(String::length)).orElse(null);System.out.println(longest);}
}

输出:

Programming

问题 15:如何使用 Stream 函数将一个数字列表转换为它们的平方数列表?

import java.util.*;
import java.util.stream.*;public class SquareNumbers {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).collect(Collectors.toList());System.out.println(squares);}
}

输出:

[1, 4, 9, 16, 25]

问题 16:如何使用 Stream 函数计算整数列表的平均值?

import java.util.*;
import java.util.stream.*;public class AverageValue {public static void main(String args[]) {List<Integer> numbers = Arrays.asList(10, 20, 30, 40, 50);double average = numbers.stream().mapToInt(Integer::intValue).average().orElse(0.0);System.out.println(average);}
}

输出:

30.0

问题 17:如何使用 Stream 函数找出字符串列表中所有不为空且长度大于 3 的字符串?

import java.util.*;
import java.util.stream.*;public class FilterStrings {public static void main(String args[]) {List<String> strings = Arrays.asList("Java", "", "Stream", "API", "Programming", "");List<String> filtered = strings.stream().filter(s -> !s.isEmpty() && s.length() > 3).collect(Collectors.toList());System.out.println(filtered);}
}

输出:

[Java, Stream, Programming]

问题 18:如何使用 Stream 函数找出字符串列表中最长的字符串的长度?

import java.util.*;
import java.util.stream.*;public class LongestStringLength {public static void main(String args[]) {List<String> strings = Arrays.asList("Java", "Stream", "API", "Programming", "Language");int maxLength = strings.stream().mapToInt(String::length).max().orElse(0);System.out.println(maxLength);}
}

输出:

11

问题 19:如何使用 Stream 函数对字符串列表进行排序并转换为大写?

import java.util.*;
import java.util.stream.*;public class SortAndUppercase {public static void main(String args[]) {List<String> strings = Arrays.asList("java", "stream", "api", "programming", "language");List<String> sortedAndUppercase = strings.stream().sorted().map(String::toUpperCase).collect(Collectors.toList());System.out.println(sortedAndUppercase);}
}

输出:

[API, JAVA, LANGUAGE, PROGRAMMING, STREAM]

问题 20:如何使用 Stream 函数将一个整数列表中的所有元素翻倍?

import java.util.*;
import java.util.stream.*;public class DoubleValues {public static void main(String args[]) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);List<Integer> doubled = numbers.stream().map(n -> n * 2).collect(Collectors.toList());System.out.println(doubled);}
}

输出:

[2, 4, 6, 8, 10]

结语

以上问题和解决方案展示了如何利用 Java 8 中的 Stream API 进行高效的数据处理。这些示例不仅帮助你准备面试问题,还可以作为实际开发中的参考。

通过这些示例,你可以看到 Stream API 在处理集合数据时的强大功能和简洁语法。这些技能对于现代 Java 开发者来说至关重要,特别是在处理大数据集和实现复杂的数据操作时。

希望这些内容对你有所帮助,并祝你在Java编程的道路上取得更大的成就!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3268572.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

光伏电站气象站:现代光伏系统的重要组成部分

光伏电站气象站&#xff0c;作为现代光伏系统的重要组成部分&#xff0c;集成了气象学、电子信息技术、数据处理与分析等多学科技术于一体&#xff0c;能够实时监测并记录包括温度、湿度、风速、风向、太阳辐射强度、降雨量在内的多种气象参数。这些数据不仅是评估光伏板发电效…

git学习笔记(总结了常见命令与学习中遇到的问题和解决方法)

前言 最近学习完git&#xff0c;学习过程中也遇到了很多问题&#xff0c;这里给大家写一篇总结性的博客&#xff0c;主要大概讲述git命令和部分难点问题&#xff08;简单的知识点这里就不再重复讲解了&#xff09; 一.git概述 1.1什么是git Git是一个分布式的版本控制软件。…

嵌入式初学-C语言-五

C语言语句概述 C语句的分类 ⑴ 控制语句 用于完成一定的控制功能 ① if ( ) …… else …… ② for ( ) …… ③ while ( ) …… ④ do …… while ( ) ⑤ continue ⑥ break ⑦ switch ( ) ⑧ return ⑨ goto 标号 (无条件跳转语句) 说明&#xff1a;“( ) ”…

Linux第一个小程序~~~进度条

1.操作过程 我们这个是实现一个进度条的程序&#xff0c;类似于下面的这个样子&#xff0c;但是效果肯定没有下面这个高级哈 我们的实现效果是这个样子的&#xff08;动态的哈&#xff09;&#xff1a; 我们这个需要去进行一个文件系统的搭建&#xff0c;类似于我们进行这个C语…

奇异值分解(SVD)时间复杂度分析与优化

奇异值分解是一种矩阵分解的方法&#xff0c;大学线性代数里面也讲过奇异值分解的方法&#xff0c;因此这是一个为大家所熟知的算法。 1 SVD 时间复杂度分析 给定一个 m n m \times n mn 的矩阵 a \boldsymbol{a} a&#xff0c;按照下面公式做分解&#xff0c;其中 Σ \S…

Cmake生成的Xcode工程相对路径与绝对路径的问题

Cmake生成的Xcode工程相对路径与绝对路径的问题 文章目录 Cmake生成的Xcode工程相对路径与绝对路径的问题前言修改.pbxproj文件验证工程小结 前言 由于Cmake的跨平台的自动化构建的方便性以及他广泛应用于编译过程的管理&#xff0c;在开发过程中难免用到Cmake。我也使用Cmake…

R语言统计分析——控制流

参考资料&#xff1a;R语言实战【第2版】 语句&#xff08;statement&#xff09;是一条单独的R语言或一组复合语言&#xff08;包含在花括号{}中的一组R语言&#xff0c;使用分号分隔&#xff09; 条件&#xff08;cond&#xff09;是一条最终被解析为真&#xff08;TRUE&…

每天一个设计模式之职责链模式(第一天)

特别感谢刘伟老师&#xff0c;看他的书我学到了很多东西&#xff0c;从今天开始我要开始更新啦&#xff01; 在csdn个人博客来总结知识&#xff0c;把他们变成自己的能力。 对三&#xff0c;要不起&#xff0c;张三李四王五几个人在玩斗地主&#xff0c;过过过&#xff0c;一…

Android 应用内下载 APK Demo(Kotlin语言)

应用内下载更新包 包含&#xff1a; 权限检测、通知栏生成进度、实时进度反馈、下载完成自动安装、通知栏点击安装 效果 代码 第三方依赖&#xff08;仅仅主要提供上下文对象Context&#xff09;&#xff1a; implementation com.blankj:utilcodex:1.30.6下载工具类&#x…

【Python】python员工信息管理系统(数据库版本)(GUI界面+数据库文件+源码)【独一无二】

在这里插入图片描述> &#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff…

爬虫提速!用Python实现多线程下载器!

✨ 内容&#xff1a; 在网络应用中&#xff0c;下载速度往往是用户体验的关键。多线程下载可以显著提升下载速度&#xff0c;通过将一个文件分成多个部分并行下载&#xff0c;可以更高效地利用带宽资源。今天&#xff0c;我们将通过一个实际案例&#xff0c;学习如何用Python实…

2024年软件系统与信息处理国际会议(ICSSIP 2024)即将召开!

2024年软件系统与信息处理国际会议&#xff08;ICSSIP 2024&#xff09;将于2024年10月25-27日在中国昆明举行。引领技术前沿&#xff0c;共谋创新未来。ICSSIP 2024将汇聚来自世界各地的专家学者&#xff0c;他们将在会上分享最新的研究成果、技术突破及实践经验。会议议题涵盖…

昇思25天学习打卡营第1天|快速入门-实现一个简单的深度学习模型

目录 实验环境 Jupyter云上开发环境使用 导包 处理数据集 网络构建 模型训练 评估模型性能 保存模型 加载模型 预测推理 实验环境 02-快速入门.ipynb (4) - JupyterLab (mindspore.cn) 规格&#xff1a;4u 16G 20G 镜像&#xff1a;py39-ms2.3.0rc1 特性&#xff1…

【计算机网络】IP分片实验

一&#xff1a;实验目的 1&#xff1a;理解IP数据报分片的工作原理。 2&#xff1a;理解IP协议报文类型和格式。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。 软件&#xff1a;记事本、WireShark、Chrom…

Pc端vue2实现横向纵向鼠标滚动布局

类似uniaapp中的scroll-view组件,可横向可竖向,样式需要自己跳整一下 横向:(鼠标按下滑动里面的元素,可滑动,滚动条和左右都可以调整) 纵向: 代码实现:主页面引入组件 <template><div><!-- 调用组件 --><!-- vertical 垂直 写宽高 例如: widt…

失业潮下,有人靠天工AI做副业年入10万?

前言 你好&#xff0c;我是咪咪酱 这篇文章总结2个AI副业项目&#xff0c;不用写代码&#xff0c;就能做的2个副业项目。 第一&#xff1a;AI生成微信表情包&#xff0c;上传到微信表情包平台等&#xff0c;坚持下去&#xff0c;会有可观的收入。 第二&#xff1a;AI生成连载…

MQ消息队列+Lua 脚本实现异步处理下单流程

具体实现和代码可参考我以前做过的笔记&#xff1a;《黑马点评》异步秒杀优化|消息队列 回顾一下下单流程&#xff1a; 用户发起请求 会先请求Nginx,Nginx反向代理到Tomcat&#xff0c;而Tomcat中的程序&#xff0c;会进行串行工作&#xff0c; 分为以下几个操作&#xff1…

KamaCoder 98. 所有可到达路径 + LC 797. All Paths From Source to Target

题目要求 给定一个有 n 个节点的有向无环图&#xff0c;节点编号从 1 到 n。请编写一个函数&#xff0c;找出并返回所有从节点 1 到节点 n 的路径。每条路径应以节点编号的列表形式表示。 输入描述 第一行包含两个整数 N&#xff0c;M&#xff0c;表示图中拥有 N 个节点&…

Apache Nifi挂接MQTT与Kafka实践

目录 1. 说明&#xff1a; 2. 方案设计&#xff1a; 2.1 资源配置&#xff1a; 2.2 交互Topics: 3. 实现步骤 3.1 Nifi 桌面 3.2 MqttToKafka 3.2.1 配置 3.2.2 测试 3.2.3 结果 3.3 KafkaToMqtt 3.3.1 配置 3.3.1 测试 3.3.1 结果 ​编辑 4. 总结&#xff…

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据 &#x1f4da;MT6816相关资料&#xff08;来自商家的相关资料&#xff09;&#xff1a; 资料&#xff1a;https://pan.baidu.com/s/1CAbdLBRi2dmL4D7cFve1XA?pwd8888 提取码&#xff1a;8888&#x1f4cd;驱动代码编写&…