-
ArrayList和LinkedList允许存null但易致NPE;HashMap允一个nullkey和任意nullvalue,ConcurrentHashMap禁止nullkey/value;TreeSet/TreeMap不接受null;Optional.of(null)立即抛异常,须用ofNullable。
-
TreeMap默认按key自然顺序升序排序,底层基于红黑树实现;key需实现Comparable接口,否则需显式传入Comparator;不允nullkey(除非Comparator支持);时间复杂度O(logn),适用于范围查询。
-
InterruptedIOException是IOException的子类,用于标识IO操作因线程中断而失败,其bytesTransferred字段可记录已传输字节数,适用于部分读写后中断的场景。尽管自JDK1.6起被标记为过时,现代NIO多使用ClosedByInterruptException,但在阻塞IO中仍需关注线程中断处理。正确做法是在捕获IOException后检查线程中断状态,决定是否重试或清理资源。对于支持随机访问的文件,可通过RandomAccessFile或FileChannel记录p
-
应使用双向Map(学生→课程集、课程→学生集)建模多对多关系,值类型用Set并重写equals/hashCode;并发时用ConcurrentHashMap.newKeySet()或细粒度同步;删除需安全遍历清理;统计宜预计算或加锁保障一致性。
-
只有实现AutoCloseable或Closeable接口的类(如FileInputStream、BufferedReader、JDBC资源等)才能用于try-with-resources;close()在块结束时按声明逆序调用,异常会被压制,且不保证关闭成功或及时。
-
Java重写要求方法名、参数列表完全一致,返回类型协变;访问权限不能更严格,检查异常不能更宽泛;static、final、private方法不可重写;需用@Override注解校验;避免构造器中调用可重写方法。
-
Path和Files从设计上解决File类路径、元数据、I/O混杂导致的跨平台错误、静默失败等问题:Path专注可预测路径操作,Files提供语义明确、异常清晰的I/O方法。
-
DelayQueue适用于定时任务调度、缓存失效控制、限流重试及消息延迟投递等场景,基于Delayed接口实现时间触发的任务管理,支持高效精准的单机延迟处理,但不适用于分布式环境。
-
Java中的“视图”(如Map.values()或List.subList()返回的对象)是轻量级代理,其是否支持按索引访问首尾元素,取决于底层接口类型(如List支持,Collection或Set通常不支持),需结合迭代顺序与具体实现谨慎处理。
-
Java中Base64编码应使用JDK8+内置Base64.getEncoder().encodeToString(),线程安全且无需依赖;URL安全场景用getUrlEncoder().withoutPadding();解码后需按原始编码(如UTF-8)转字符串,不可直接newString(byte[]);避免手动拼接、错误字符集处理及误当加密使用。
-
BigInteger初始化禁用空字符串或null,须校验非空再构造;运算必须用add()等方法而非+−*/;比较大小用compareTo()而非>==。
-
Java并发应从Thread和Runnable入门,先实践线程启动、共享变量可见性、sleep/join协作;再深入synchronized三种用法及锁对象本质;接着掌握ThreadPoolExecutor核心参数;最后理解CompletableFuture的执行时机与线程池选择。
-
Arrays.binarySearch要求数组必须已升序排序,否则结果不可预测;因其依赖有序性进行区间收缩,乱序时中点值无法提供正确方向,导致查找失败或返回错误索引。
-
本文详解如何在Android中通过IntentFilter正确接收其他应用分享的URL,并自动填充到EditText中,重点解决因intent-filter配置错误导致的Activity无法启动或数据无法获取的问题。
-
Java时间提醒工具应选用ScheduledExecutorService实现高精度定时,支持LocalDateTime配置一次性/周期性提醒,集成弹窗、系统通知、声音反馈,并确保后台运行与资源安全释放。