杂项

简介: 本文介绍了依赖与继承的区别、Lombok 使用、TreeMap 与 TreeSet 的比较输出机制、哈希码生成方式、TreeSet 排序原理、Java 流操作注意事项、类型转换问题及解决方案等内容,涵盖 Java 开发中的常见知识点与实践技巧。

依赖和继承的区别

  • 依赖:工程间的 “功能复用”,通过调用其他工程的 public 代码实现,是业务逻辑层面的关联。
  • 继承(父工程):工程间的 “配置复用”,通过统一管理配置简化维护,是构建层面的关联。
  • 并且使用版本锁定(dependencyManagement)中父工程只是为了声明版本,做版本的控制,只有当子工程显示引入,才会下载道maven仓库
  • 子工程模块更像是项目内部的 "业务组件",负责封装特定业务逻辑;而第三方依赖(比如lomnok)更像是 "基础设施工具",提供通用能力。两者相辅相成:

1.lomdbk使用

lombdk导入,项目工程要导入,运行的模块也要导入

2.treemap与treeset在进行比较输出时

如果比较的对象相同,会默认把靠后的给输出时给删除

原因:在存储map是用对象作为键,则当利用键的某个属性进行比对时,默认会把这个属性作为键,所以碰到相同的,会进行覆盖

3.整型的hashcod就是整型值?,hashcode是如何生成的

integer的对应对象的值就是其哈希值

类类型

哈希码生成依据

示例

默认(Object)

内存地址

new Object().hashCode()

包装类

内部值

Integer.valueOf(42).hashCode() → 42

String

字符序列

"abc".hashCode() → 96354

自定义类

关键属性组合(重写)

Objects.hash(name, age)

4.treeSet排序字符串怎么排序

大概率看首字母,可自定义compare进行比较

5.treeset排序的原理

调用compardto或者自定义实现,默认是升序

6.重写形参类型是父类,重写也必须是父类,类型要保持一致??

方法重写(Override)要求子类方法的参数类型必须与父类方法完全一致

如果参数类型发生变化,会被认为是重载

7.使用流之后要有一个对象去承接,不然等于没有操作;使用流操作完返回的是流,要进行转换

示例:

Stream.concat(play2.stream(), l1.stream().skip(l1.size() - 3))

错误1:仅仅对对流进行了合并,结果仍然是流,未用对应属性对象去承接,

在输出打印play2无任何变化

Stream.concat(play2.stream(), l1.stream().skip(l1.size() - 3)).toList();

错误2:使用tolist方法转化为list集合,但是结果依旧没有保存

正确写法:

play2 = Stream.concat(play2.stream(), l1.stream().skip(l1.size() - 3)).toList();

更改了play2

8.

  • TreeSet:构造时必须指定排序规则(Comparator 或 Comparable),插入元素时自动排序。
  • 默认必须调用
  • ArrayList:构造时无需排序规则,需要排序时手动调用 sort() 方法。

9.sort(null)含义

  • 自然排序:使用元素类型(这里是 Student)实现的 Comparable 接口中的 compareTo 方法进行排序。
  • 要求:元素类型必须实现 Comparable 接口,否则会抛出 ClassCastException。
l1.sort(null); // 等价于 l1.sort(Comparator.naturalOrder());

10.int转化为string 使用(string)int不行,解决方案

原因:int 是基本类型,与 String 没有继承关系,因此无法直接强制转换

Java 的强制类型转换仅适用于具有继承关系的引用类型,不能用于基本类型和引用类型之间。

public class Main {
    public static void main(String[] args) {
        // 方法1
        int num1 = (int)(Math.random()*33+1);
        String str1 = String.valueOf(num1);
        System.out.println("方法1: " + str1);
        // 方法2
        int num2 = (int)(Math.random()*33+1);
        String str2 = Integer.toString(num2);
        System.out.println("方法2: " + str2);
        // 方法3
        String str3 = "" + (int)(Math.random()*33+1);
        System.out.println("方法3: " + str3);
        // 方法4
        String str4 = String.format("%d", (int)(Math.random()*33+1));
        System.out.println("方法4: " + str4);
    }
}

方法

优点

缺点

String.valueOf()

简洁明了,不易出错

无明显缺点

Integer.toString()

明确是类型转换操作

需要先声明整数变量

字符串连接

无需调用方法,代码更简短

性能略低,可能降低可读性

String.format()

可进行复杂格式化

用于简单转换时显得冗余


相关文章
|
存储 NoSQL Redis
redis set底层数据结构
set底层存储  redis的集合对象set的底层存储结构特别神奇,我估计一般人想象不到,底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表(key为set的值,value为null)。
7725 0
|
3月前
|
人工智能 安全 前端开发
带 AI 智能助手的研发管理工具测评:9 款主流平台怎么选?
本文以“带 AI 智能助手的研发管理工具”为主题,选取 9 款具有代表性的工具进行测评,包括:ONES、Jira、GitLab、Azure DevOps、GitHub、Linear、YouTrack、monday dev、Productboard。文章将从选型结论、工具深评、组织成熟度选型几个角度展开,帮助团队形成更清晰的判断。
312 1
|
6月前
|
人工智能 自然语言处理 JavaScript
告别API参数解析!一句话查12306火车票,这个开源项目做到了
本文介绍如何用IntentOrch+MCP 5分钟搭建智能出行助手:仅需3步配置,一句自然语言(如“查4月15日京沪高铁票”),AI自动解析意图、调用12306 MCP服务,返回结构化车次表——零规则、零硬编码,真正实现“说即所得”。
807 17
|
6月前
|
人工智能 搜索推荐 定位技术
外贸B2B的降维打击:我用“WhatsApp+AI”重构客户开发全流程(附7层漏斗拆解)
传统外贸获客成本高、效率低?本文拆解一套“WhatsApp+AI自动获客”7层漏斗打法:获客→筛选→触达→跟进→转化→管理→成本。
|
8月前
|
存储 人工智能 运维
刚用AI Agent指挥官处理服务器告警,3分钟搞定之前熬2小时的活,我直接提前下班撸串去了
这是一篇生动的技术叙事:运维工程师亲述从“凌晨2小时盲查告警”到“3分钟AI自动修复”的真实跃迁。AI Agent指挥官可自动聚类告警、登录服务器诊断、定位代码Bug、执行备份/清理/回滚,并生成复盘报告——不止提效4000%,更防误操作、避背锅、助预防。运维价值,本该是稳而非熬。
622 1
|
数据可视化 关系型数据库 MySQL
【MCP教程系列】上阿里云百炼,5分钟解锁数据分析与可视化能力
本文介绍如何在阿里云百炼平台通过自定义MCP部署MySQL服务,实现5分钟解锁数据分析与可视化能力。以碳排放数据库为例,详细讲解从创建公网访问的MySQL数据库、配置MCP服务到引入智能体进行数据分析的全流程。借助QuickChart等工具,可将复杂数据转化为直观图表,赋能业务决策。适合希望快速上手数据库分析的用户参考使用。
2944 0
SAP ABAP 程序调用设置成后台作业模式
ABAP 程序调用设置成后台作业模式
1394 0
|
前端开发 Go API
Gin vs Beego: Golang的Web框架之争
Gin vs Beego: Golang的Web框架之争
|
Linux Shell 调度
PBS任务脚本模板及常用服务器PBS命令介绍
【2月更文挑战第21天】本文介绍在Linux服务器中,通过PBS(Portable Batch System)作业管理系统脚本的方式,提交任务到服务器队列,并执行任务的方法~
1612 5
PBS任务脚本模板及常用服务器PBS命令介绍
|
分布式计算 Shell 开发工具
Spark编程实验二:RDD编程初级实践
Spark编程实验二:RDD编程初级实践

热门文章

最新文章