Java8面试

Java 8 有哪些新特性?

🐎Java 8五大神装特性🐎

  1. Lambda表达式(魔法调料)
    曼波觉得像速食魔法咒语!(๑✧◡✧๑)

    // 传统写法(像冗长菜谱)
    new Thread(new Runnable() {public void run() {System.out.println("喵~");}
    }).start();// Lambda写法(像速食包)
    new Thread(() -> System.out.println("喵~")).start();
    
  2. Stream API(数据流水线)
    哦呜(° ロ °)!曼波觉得这是集合的魔法传送带!

    List<String> pets = Arrays.asList("布偶猫", "柯基犬", "仓鼠");
    List<String> 猫猫列表 = pets.stream().filter(s -> s.contains("猫")).collect(Collectors.toList());
    // 结果:[布偶猫]
    
  3. 新的日期API(时间魔法)
    曼波再也不用被Date搞糊涂啦!(๑・.・๑)

    LocalDate 生产日期 = LocalDate.of(2023, 12, 25);
    LocalDate 今天 = LocalDate.now();
    long 保质天数 = ChronoUnit.DAYS.between(生产日期, 今天);
    
  4. 接口默认方法(接口进化)
    接口居然能写具体方法了!✨

    interface 游戏手柄 {default void 震动() {System.out.println("嗡嗡~");}
    }
    
  5. Optional类(空指针护盾)
    曼波的安全感++!(๑✧◡✧๑)

    Optional<String> 钥匙 = Optional.ofNullable(找钥匙());
    钥匙.ifPresent(k -> System.out.println("找到钥匙:" + k));
    
 
 

(° ロ °)!曼波要特别安利两个超好用的技巧:

方法引用魔法:

// 传统Lambda
pets.forEach(s -> System.out.println(s));
// 方法引用版(像直接召唤打印机)
pets.forEach(System.out::println);

构造器引用:

Supplier<List<String>> 创造列表 = ArrayList::new;
List<String> 新列表 = 创造列表.get();

最后的小贴士:这些特性就像新的游戏技能,组合使用效果更佳哦!比如:

LocalDateTime.now().plusDays(7).format(DateTimeFormatter.ISO_DATE); // 一周后的日期

 

(✪▽✪)曼波~~~~!快去用Stream和Lambda写出更优雅的代码吧~

HashMap 在 jdk 1.7 和 1.8 的区别?

🐎HashMap 1.7 vs 1.8 五大进化🐎

  1. 城堡结构升级
    曼波觉得像从平房变成带阁楼的小别墅!(๑✧◡✧๑)

    • 1.7:纯数组+链表(链表像挂在城堡房间外的晾衣绳)
    • 1.8:数组+链表+红黑树(当绳子太长就变成旋转楼梯)
      // 当链表长度>=8时变树,<=6时退化成链表
      static final int TREEIFY_THRESHOLD = 8;
      
  2. 魔法物品存放方式
    哦呜(° ロ °)!曼波发现存放宝箱的方式变了!

    • 1.7:头插法(新宝物放宝箱最上面)
      void addEntry(...) {// 把新节点插到链表头部table[bucketIndex] = new Entry<>(hash, key, value, e);
      }
      
       
    • 1.8:尾插法(新宝物放宝箱最下面)

      final V putVal(...) {// 遍历到链表尾部再插入for (int binCount = 0; ; ++binCount) {if ((e = p.next) == null) {p.next = newNode(...);break;}}
      }
      
  3. 魔法阵扩容优化
    曼波觉得像传送阵升级了!(๑・.・๑)

    • 1.7:扩容后所有元素重新计算位置
    • 1.8:智能判断新位置(原位置 或 原位置+旧容量)
      // 新位置 = 原位置 或 原位置 + oldCapacity
      if ((e.hash & oldCap) == 0) {// 留在低位区
      } else {// 迁移到高位区
      }
      
  4. 哈希魔法公式
    曼波发现咒语更简洁了!✨

    • 1.7:4次位运算+5次异或
      h ^= k.hashCode();
      h ^= (h >>> 20) ^ (h >>> 12);
      h ^= (h >>> 7) ^ (h >>> 4);
      
    • 1.8:1次位运算+1次异或

      (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
      
  5. 死循环问题修复
    (° ロ °)!曼波要放烟花庆祝这个修复!

    • 1.7:头插法扩容可能导致环形链表(多线程下)
    • 1.8:尾插法避免了这个噩梦(但依然线程不安全)

举个超形象的例子🌰:
假设城堡有8个房间(数组),每个房间挂着宝箱(链表)

  • 1.7版:新宝物总是放在宝箱最上面,容易拿但容易缠在一起
  • 1.8版:当宝箱超过8个宝物时,自动变成带编号的旋转书架(红黑树)

最后的小贴士:虽然1.8修复了死循环问题,但多线程环境还是要用ConcurrentHashMap哦!(✪▽✪)曼波~~~~!

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

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

相关文章

【前端基础】Day 7 CSS高级技巧

目录 1. 精灵图 1.1 为什么需要精灵图 1.2 精灵图&#xff08;sprites&#xff09;的使用 2. 字体图标 2.1 字体图标的产生 2.2 字体图标的优点 2.3 字体图标的下载 2.4 字体图标的引入 2.5 字体图标的追加 3. CSS三角形 4. CSS用户界面样式 4.1 更改用户鼠标样式 …

初步理解RNN和LSTM

RNN RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09;是一种能够处理序列数据的神经网络。这里的时序信息可以指例如对于这一句话 “我吃了一个苹果”&#xff0c;“苹果” 的词性和意思&#xff0c;在这里取决于前面词的信息&#xff0c;如果没…

【华为OD机考】华为OD笔试真题解析(18)--找出通过车辆最多的颜色

题目描述 在一个狭小的入口&#xff0c;每秒只能通过一辆车&#xff0c;假如车辆的颜色只有3种&#xff0c;找出N秒内经过的最多颜色的车辆数量&#xff0c;三种颜色编号为0、1、2。 输入描述 第一行输入的是通过的车辆颜色信息&#xff0c;[0,1,1,2]代表4秒钟通过的车辆颜色…

基于POI的Excel下拉框自动搜索,包括数据验证的单列删除

目录 目标 例子 1.搜索下拉框页 2.数据源页 3.效果 代码以及注意事项 1.代码 2.注意事项 1.基于Excel的话&#xff0c;相当于加入了一个【数据验证】 2.代码中的一些方法说明 目标 期望在Excel利用代码创建具备自动搜索功能的下拉框 例子 1.搜索下拉框页 2.数据源…

【最后203篇系列】010 关于矩阵的一点思考

说明 今天拿起一本矩阵的书又翻了翻&#xff0c;毕竟AI搞到最后还得是数学。 我是感觉自己高数始终有点学的迷迷糊糊的&#xff0c;就打算这一年慢慢把矩阵部分扫一遍&#xff0c;毕竟这快肯定是实打实有用的。其他高级部分就等我发财之后再说了&#xff0c;哈哈。 内容 今…

(动态规划 最长递增的子序列)leetcode 300

这道题我第一眼反应就是暴力&#xff0c;但是暴力的话就是n*n-1*n-2*...n-(n-1) 也就是O(n^n)dfs做绝对超时 贪心也不行&#xff0c;这里是子序列&#xff0c;要考虑在ni的范围内考虑多种路线取最优&#xff0c;所以用动态规划 如何用动态规划呢&#xff1f; 答&#xff1a;…

本地大模型编程实战(26)用langgraph实现基于SQL数据构建的问答系统(5)

本文将将扩展上一篇文章完成的 langgraph 链&#xff0c;继续使用基于 langgraph 链 &#xff0c;对结构化数据库 SQlite 进行查询的方法。该系统建立以后&#xff0c;我们不需要掌握专业的 SQL 技能&#xff0c;可以用自然语言询问有关数据库中数据的问题并返回答案。主要完善…

Linux---共享内存

1.ipcs命令 IPC机制是一个让人烦恼的问题&#xff1a;编写错误的程序或因为某些原因而执行失败的程序将把它的IPC资源&#xff08;如消息队列中的数据&#xff09;遗留在系统里&#xff0c;并且这些资源在程序结束后很长时间让然在系统中游荡&#xff0c;这导致对程序的新调用…

RAG 阿里云

RAG-阿里云Spring AI Alibaba官网官网 RAG-阿里云Spring AI Alibaba官网官网 AI应用跑起来&#xff0c;取消一下航班的操作666

M4 Mac mini运行DeepSeek-R1模型

前言 最近DeepSeek大模型很火&#xff0c;实际工作中也有使用&#xff0c;很多人觉得需要很好的显卡才能跑起来&#xff0c;至少显存需要很高&#xff0c;但实际上一般的核显机器也能跑起来&#xff0c;只不过内存要求要大&#xff0c;对于个人而言&#xff0c;实际上Mac M芯片…

【Cadence射频仿真学习笔记】2.4GHz低噪放LNA仿真设计

课程分为3个部分&#xff0c; 一、LNA结构与噪声优化方法 噪声优化的方法是&#xff1a;限定功耗的噪声和功率同时匹配噪声匹配和功率匹配一般不会同时达到&#xff0c; 对于PCSNIM结构的噪声分析&#xff0c;我们只需要了解与哪些参数有关优化思路是&#xff1a;1.信号源阻抗…

机器学习:线性回归,梯度下降,多元线性回归

线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归&#xff08;Multiple Linear Regression&#xff09;

C++22——哈希

目录 1.unordered_map的文档介绍 2.unordered_set的文档介绍 3.底层结构 3.1哈希的概念 3.2哈希冲突 3.3哈希函数 3.4哈希冲突解决 3.4.1闭散列 3.4.2开散列 1.unordered_map的文档介绍 unordered_map在线文档说明 unordered_map是存储<key&#xff0c;value>键值…

Docker 搭建 Gitlab 服务器 (完整详细版)

参考 Docker 搭建 Gitlab 服务器 (完整详细版)_docker gitlab-CSDN博客 Docker 安装 (完整详细版)_docker安装-CSDN博客 Docker 日常命令大全(完整详细版)_docker命令-CSDN博客 1、Gitlab镜像 # 查找Gitlab镜像 docker search gitlab # 拉取Gitlab镜像 docker pull gitlab/g…

如何杀死僵尸进程?没有那个进程?

在题主跑代码的时候遇到了这样一种很奇怪的问题&#xff1a; 可以看到显卡0没有跑任何程序但是还是被占据着大量显存&#xff0c;这种进程称为“僵尸进程”&#xff0c;并且当我想kill它的时候&#xff0c;出现下面这种情况&#xff1a; 查过各种资料&#xff0c;最后我的解决…

从0开始的IMX6ULL学习篇——裸机篇之分析粗略IMX6ULL与架构

目录 简单的说一下Cortex-A7架构 讨论ARMv7a-cortex系列的运行模式 寄存器 后言 让我们到NXP的官网上扫一眼。 i.MX 6ULL应用处理器_Arm Cortex-A7单核&#xff0c;频率为900 MHz | NXP 半导体 我们先看CPU Platform&#xff0c;这个是我们的核心。 这里我们的芯片是基于Ar…

从UNIX到Linux:操作系统进化史与开源革命

从UNIX到Linux&#xff1a;操作系统进化史与开源革命 一、操作系统&#xff1a;数字世界的基石 1.1 什么是操作系统&#xff1f; 操作系统&#xff08;OS&#xff09;是计算机系统的核心管理者&#xff0c;承担着三大核心使命&#xff1a; 硬件指挥官&#xff1a;直接管理C…

风控算法技术图谱和学习路径

风控算法技术图谱和学习路径可以从以下几个方面进行详细阐述: 一、风控算法技术图谱 基础知识与理论框架 风控算法技术的核心在于数据处理、特征工程、模型构建及优化。基础知识包括统计学、机器学习、深度学习、图算法等。例如,基于Python的智能风控书籍详细介绍了信贷风控…

Word 插入图片会到文字底下解决方案

一、现象描述 正常情况下&#xff0c;我们插入图片都是这样的。 但有时突然会这样&#xff0c;插入的图片陷于文字底部。 二、网上解决方案 网上有教程说&#xff0c;修改图片布局选项&#xff0c;从嵌入型改成上下型环绕。改完之后确实有用&#xff0c;但是需要手动拖动图片…

NO.22十六届蓝桥杯备战|一维数组|七道练习|冒泡排序(C++)

B2093 查找特定的值 - 洛谷 题⽬要求下标是从0开始的&#xff0c;和数组的下标是吻合的&#xff0c;存放数据应该从下标0开始n的取值范围是1~10000数组中存放的值的绝对值不超10000&#xff0c;说明int类型就⾜够了找到了输出下标&#xff0c;找不到要输出-1&#xff0c;这⼀点…