-
keySet()方法返回Map中所有键的Set视图,通过遍历键并调用get获取对应值,适用于操作键的场景,但性能敏感时宜用entrySet(),且遍历时需用迭代器删除元素。
-
switch语句用于多分支选择,支持byte、short、int、char、String(Java7+)和枚举类型;每个case值必须是唯一常量,需用break防止穿透,default处理默认情况,String比较区分大小写且表达式不能为null。
-
空指针异常是Java中因操作null引用引发的运行时异常,常见于调用null方法、访问null字段、操作null数组、自动拆箱及未校验集合元素;预防需结合入参校验、非null返回、Objects工具类、IDE空值检查、接口契约、Optional封装、单元测试与日志监控。
-
Java网络异常排查需分层定位:先验证网络连通性(ping、telnet、nslookup),再检查服务状态与资源(进程、端口、日志、系统资源),接着分析TCP行为(Connectionrefused/reset等),最后审查客户端代码与配置(超时、连接池、流关闭、重试)。
-
答案:HashSet基于哈希表,无序但性能高,适用于频繁增删查;TreeSet基于红黑树,自动排序但性能稍低,适用于需有序遍历场景。
-
LinkedList基于双向链表实现,支持高效插入删除。1.可用addFirst/addLast/add在任意位置添加元素;2.通过removeFirst/removeLast/remove按位置或对象删除;3.提供getFirst/getLast/get/set进行访问修改;4.支持for-each、Iterator正反向遍历。因其Deque特性,适合两端操作,但随机访问性能差,大量索引访问应选ArrayList。
-
Java创建启动多线程有三种常用方式:继承Thread类(不推荐,受限于单继承)、实现Runnable接口(最常用,解耦且支持Lambda)、使用Callable配合FutureTask或线程池(支持返回值与异常);生产环境首选线程池。
-
ResourceBundle加载失败主因是类路径、命名或默认Locale配置错误,它不抛ClassNotFoundException而静默回退或抛MissingResourceException;实际按baseName作包路径在classpath中查找i18n/messages.properties等文件,命名需匹配locale.toString规则,且默认Locale可能被运行时覆盖,应显式指定Locale并校验关键key。
-
Collections.frequency()用于统计集合中某元素出现次数,需传入集合和目标对象,返回int型结果;使用时需确保集合非null,自定义对象应重写equals方法以保证正确比较,支持null值计数,适用于List、Set等Collection实现,时间复杂度为O(n)。
-
Java时间日期处理性能提升的关键在于选用现代API、减少对象创建及确保线程安全。首先,应摒弃线程不安全且可变的java.util.Date和SimpleDateFormat,改用不可变且线程安全的java.time包中的类如LocalDateTime和DateTimeFormatter;其次,在高频调用时应预先构建并复用DateTimeFormatter实例或将其声明为staticfinal以避免重复创建开销;再次,若仅需时间戳,则使用System.currentTimeMillis()或Instant
-
Collections.frequency用于统计集合中某元素出现次数,其依赖equals方法判断相等,处理自定义对象需重写equals和hashCode,性能为O(n),适用于小到中型集合;对于大数据量或频繁查询场景,使用HashMap或StreamAPI构建频率映射更高效,可将查询时间降为O(1)。
-
try-with-resources的核心目的是将“必须做但容易忘”的资源关闭变为自动完成,通过JVM保障异常下释放、逆序关闭多资源、抑制关闭异常以保主错不丢。
-
Java消息队列开发环境搭建分四步:选型(推荐RabbitMQ或Kafka)、Docker快速启动服务、引入SpringBoot对应依赖(spring-boot-starter-amqp或spring-kafka)、用SpringAMQP/Kafka模板收发消息,注意服务状态与配置一致性。
-
Java中Map排序需转为可排序集合再重建:按Key排序用TreeMap(天然有序,不支持nullKey);按Value排序用Stream+LinkedHashMap或自定义Comparator;取TopN用PriorityQueue更高效。
-
答案:Java中Stream.reduce有三种形式,分别用于非空流归约、指定初始值的归约和并行流归约;通过累加器函数实现求和、拼接等操作,结合Optional处理空流,利用combiner支持并行合并,需注意初始值选择与结合律要求。