-
Java集合框架的核心优势在于动态扩容、类型安全、统一接口及丰富的API,适用于不同场景的List、Set和Map是其基础。1.List是有序且允许重复的集合,常用实现有ArrayList(随机访问快)和LinkedList(增删快)。2.Set不允许重复元素,HashSet性能最优,TreeSet自动排序。3.Map存储键值对,HashMap性能最好,TreeMap按键排序,LinkedHashMap保留插入顺序。集合框架相比数组,具备动态扩容能力、泛型支持和多态性,提升了代码健壮性和可维护性。选择集合
-
组合优于继承,因组合通过内部实例委托实现功能复用,避免暴露多余接口。如MyStack持有ArrayList实例,仅封装栈所需操作,提升封装性与安全性;而继承会使子类暴露父类所有方法,破坏LIFO原则,且导致强耦合,引发脆弱基类问题——父类变更直接影响子类,难以维护。
-
使用contains()方法可判断集合是否包含某元素,返回布尔值;其依据对象的equals()方法进行比较,自定义类需重写equals()(及hashCode())以确保正确性;ArrayList和LinkedList查找为O(n),HashSet为O(1),TreeSet为O(logn);注意TreeSet不支持null元素,否则抛出NullPointerException。
-
Java注释分为单行(//)、多行(/.../)和文档(/*.../)三种:单行仅限本行,多行可跨行但不支持嵌套,文档注释用于生成API文档并支持@param等标签。
-
Collections.copy用于将源列表元素复制到目标列表,需确保目标列表长度不小于源列表且可修改。示例中先创建等长目标列表并填充,默认值后执行复制,最终输出[apple,banana,cherry]。常见错误是目标列表长度不足,抛出IndexOutOfBoundsException;更安全的替代方式是使用newArrayList<>(source)直接构造副本。该方法适用于需复用列表对象的性能敏感场景。
-
答案:Java中可通过Timer和TimerTask实现计时器,示例代码展示每秒累加并输出时间,5秒后停止;也可实现倒计时功能,注意事项包括Timer为单线程、建议用ScheduledExecutorService替代及及时调用cancel防止泄漏。
-
Arrays.asList()返回的List不支持增删操作,调用add/remove会抛UnsupportedOperationException;需可变列表应显式newArrayList(Arrays.asList(arr));基本类型数组传入会导致装箱异常。
-
自定义SpringCloudGateway过滤器的核心方式是实现AbstractGatewayFilterFactory。首先定义Config类承载配置参数,接着覆写apply方法返回GatewayFilter实例并编写filter逻辑,访问ServerWebExchange进行请求/响应处理,通过chain.filter(exchange)传递请求并在必要时使用Mono.then()执行后续操作,最后将过滤器工厂注册为SpringBean。常见陷阱包括避免阻塞操作、正确处理请求体/响应体只能消费一次的问
-
SpringBean的生命周期主要包括以下阶段:1.BeanDefinition的解析和注册;2.Bean的实例化;3.属性填充(依赖注入);4.Aware接口的处理;5.BeanPostProcessor的前置处理;6.InitializingBean接口的处理;7.自定义初始化方法;8.BeanPostProcessor的后置处理;9.Bean的使用;10.DisposableBean接口的处理;11.自定义销毁方法。SpringBean的作用域包括singleton、prototype、reques
-
答案:通过校验索引范围、使用增强for循环、异常捕获和空数组检查可有效避免数组下标越界异常。具体包括:1.访问前检查0≤index<array.length;2.遍历时优先使用for-each循环;3.用try-catch处理不可预知索引;4.初始化前检查数组非空,提升代码健壮性。
-
用IDE创建SpringBoot项目最省事,推荐IntelliJIDEA或Eclipse+SpringTools,通过SpringInitializr一键生成骨架;需选SpringBoot3.2.x/3.3.x、Java语言、JDK17+,并勾选SpringWeb依赖。
-
答案是使用Collections.reverse()可反转List集合元素顺序,如ArrayList、LinkedList等,该方法原地修改列表且无返回值,仅适用于有序集合类型。
-
使用Collections.emptyList()和emptySet()可节省内存、保证线程安全、提升泛型安全与代码可读性,适用于默认返回值等不可变场景。
-
Java不能直接制作网站,需用SpringBoot开发后端服务,配合前端或Thymeleaf模板;数据库推荐JDBC入门,部署时需正确配置Nginx反代和jar启动参数。
-
Java开发必须配置JDK、IDE和构建工具;JDK含编译器等开发组件,JRE仅支持运行;推荐JDK17/21,需验证java/javac版本并正确设置JAVA_HOME与PATH。