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://www.mzph.cn/pingmian/50470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++题解】1782. 字符图形2-星号倒直角

问题&#xff1a;1782. 字符图形2-星号倒直角 类型&#xff1a;嵌套循环、图形输出 题目描述&#xff1a; 打印字符图形。 输入&#xff1a; 一个整数&#xff08; 0<n<10 &#xff09;。 输出&#xff1a; 一个字符图形。 样例&#xff1a; 输入&#xff1a; 3…

微信Android一面凉经(2024)

微信Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《微信Android一面凉经(2024)》。 面试职位: 微信-客户端开发工程师-基础功能(广州) And…

D语言

提起编程语言&#xff0c;相信大家第一时间想到的肯定都是C,但是相信资历较大的程序员们都不会忘记D语言 D语言自 1999 年发布至今已发展了 20 年 它既拥有 Java 那样强大的表现力 又具有 C 相当的性能 却因为 2.x 版本破坏性升级 导致社区大量核心开发者将其放弃。 2010 年——…

Ubuntu22.04系统安装nodejs 14 保姆级教程

下载软件包 从NodeSource 的官方源下载并安装 Node.js 14.x 版本的软件包&#xff0c;适用于 Debian 和 Ubuntu 系统&#xff1a; curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - 更新软件源 更新软件源 sudo apt-get update 下载bodejs14 下载nodejs14 sud…

双指针算法的实现(三题详解)

这是C算法基础-基础算法专栏的第十五篇文章&#xff0c;专栏详情请见此处。 ps&#xff1a;转眼间暑假已过半&#xff0c;我在这段时间也积累了很多文章&#xff0c;所以到开学&#xff08;9月1日&#xff09;为止&#xff0c;每个周我将会在周三和周六发文章(o&#xff9f;▽&…

Springboot项目的行为验证码AJ-Captcha(源码解读)

目录 前言1. 复用验证码2. 源码解读2.1 先走DefaultCaptchaServiceImpl类2.2 核心ClickWordCaptchaServiceImpl类 3. 具体使用 前言 对于Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目…

针对datax-web 中Swagger UI接口未授权访问

application.yml 添加以下配置 实现访问doc.html 以及/v2/api-docs 接口时需要进行简单的校验 swagger:basic:enable: trueusername: adminpassword: 12345 配置重启后再进行相关访问则需要输入用户名和密码

Ubuntu 24.04 LTS Noble安装 FileZilla Server

FileZilla Server 是一款使用图形用户界面快速创建 FTP 服务器的软件。它有助于测试需要 FTP 服务器功能的各种项目。虽然早期的 FileZilla FTP 服务器仅适用于 Windows 和 macOS&#xff0c;但现在我们也可以在 Linux&#xff08;例如 Ubuntu 24.04&#xff09;上安装 FileZil…

c++红黑树,插入公式

概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍&#xff0c;因而是接近…

Docker安装 OpenResty详细教程

OpenResty 是一个基于 Nginx 的高性能 Web 平台&#xff0c;它集成了 Lua 脚本语言&#xff0c;使得开发者可以在 Nginx 服务器上轻松地进行动态 Web 应用开发。OpenResty 的核心目标是通过将 Nginx 的高性能与 Lua 的灵活性结合起来&#xff0c;提供一个强大且高效的 Web 开发…

Hadoop3.3.5的安装与单机/伪分布式配置

文章目录 一、安装须知二、安装jdk三、安装shh四、安装配置hadoop五、运行hadoop 一、安装须知 本次安装的Hadoop版本为hadoop3.3.5。 在这之前完成了VMware虚拟软件的安装&#xff0c;并安装了Ubuntu22.04&#xff0c;在这基础上进行相关配置。 二、安装jdk 在Ubuntu中使用…

cesium海洋到站提示

项目地址:Every Admin: 用于快速搭建后台管理和其他页面的项目,组件化开发,以及大屏展示. <template> <div class"topbox"> xx海洋管理 </div> <div class"selectbox"> <div class"title"> 航线列表 </div>…

Docker快速搭建WordPress博客系统网站

WordPress 是一款广泛使用的开源内容管理系统(CMS),用于创建和管理网站和博客。 主要功能: 易于使用的界面:WordPress 提供了一个直观的后台管理界面,使用户能够轻松创建、编辑和管理网站内容。 主题和模板:WordPress 提供了各种主题和模板,可根据网站需求进行选择和自…

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

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

前端(1)HTML

1、标签 创建1.html文件&#xff0c;浏览器输入E:/frontheima/1.html&#xff0c;可以访问页面 页面展示 在VSCODE安装IDEA的快捷键&#xff0c;比如ctld复制一行、ctrlx剪切 <p id"p1" title"标题1">Hello,world!</p> <p id"p2"…

聊一聊知识图谱结合RAG

因为最近在做一些关于提高公司内部使用的聊天机器人的回答准确率&#xff0c;并且最近微软官方也是开源了一下graphrag的源码&#xff0c;所以想聊一聊这个知识图谱结合rag。 rag在利用私有数据增强大模型回答的领域是一种比较典型的技术&#xff0c;也就是我们提出问题的时候&…

排序系列 之 希尔排序

&#xff01;&#xff01;&#xff01;排序仅针对于数组哦本次排序是按照升序来的哦 介绍 英文名为ShellSort&#xff0c;又称“缩小增量排序”是直接插入排序算法的一种更高效的改进版本希尔排序是把记录按下标的指定步长分组&#xff0c;然后按照每组使用直接插入排序&#…

C++程序的UI界面闪烁问题的解决办法总结

Windows C++程序复杂的UI界面要使用多种绘图技术(使用GDI、GDI+、ddraw、D3D等绘图),并要贴图去美化,在窗口移动或者改变大小的时候可能会出现闪烁。下面罗列一下UI界面产生闪烁的几种可能的原因,并给出相应的解决办法。 1、原因一 如果熟悉显卡原理的话,调用GDI函数向屏…

【动态规划】不同路径

不同路径&#xff08;难度&#xff1a;中等&#xff09; AC代码 有点水 class Solution { public:int uniquePaths(int m, int n) {//以m为行&#xff0c;n为列&#xff0c;创建二维数组vector <vector<int>> dp(m1,vector<int>(n1));dp[0][1]1;dp[1][0]1;…

内网渗透—内网穿透工具NgrokFRPNPSSPP

前言 主要介绍一下常见的隧道搭建工具&#xff0c;以此来达到一个内网穿透的目的。简单说一下实验滴环境吧&#xff0c;kali作为攻击机&#xff0c;winserver2016作为目标靶机。 kali 192.168.145.171 winserver2016 10.236.44.127 显然它们处于两个不同的局域网&#xff0c…