当前位置: 首页 > news >正文

ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变

各位数组操控师们好!今天给大家带来的是Apache Commons Lang3中的ArrayUtils工具类。这个工具就像数组界的"孙悟空",能让你的数组随心所欲地变大、变小、变长、变短,再也不用对着原生数组的"死板"叹气了!

一、为什么需要ArrayUtils?

原生Java数组就像一块"铁板":

  • 长度固定?改不了!
  • 想加个元素?重写一个!
  • 找元素位置?自己循环!

而ArrayUtils就是给你的数组装上"变形按钮":

// 原始人写法
String[] oldArray = {"Java", "Python"};
String[] newArray = new String[oldArray.length + 1];
System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
newArray[newArray.length - 1] = "Go";// ArrayUtils现代写法
String[] languages = ArrayUtils.add(new String[]{"Java", "Python"}, "Go");

二、ArrayUtils的"七十二变"

1. 数组扩容术(添加元素)

// 基本用法
int[] numbers = {1, 2, 3};
numbers = ArrayUtils.add(numbers, 4); // [1, 2, 3, 4]// 指定位置插入
numbers = ArrayUtils.insert(2, numbers, 99); // [1, 2, 99, 3, 4]

2. 数组缩身法(删除元素)

// 按索引删除
String[] fruits = {"Apple", "Banana", "Orange"};
fruits = ArrayUtils.remove(fruits, 1); // ["Apple", "Orange"]// 按元素删除(只删第一个匹配项)
fruits = ArrayUtils.removeElement(fruits, "Orange"); // ["Apple"]

3. 数组查找功

// 查找元素位置
int[] primes = {2, 3, 5, 7, 11};
int index = ArrayUtils.indexOf(primes, 5); // 2// 检查包含关系
boolean hasEven = ArrayUtils.contains(primes, 2); // true

4. 数组分身术(子数组)

// 截取子数组
int[] subArray = ArrayUtils.subarray(primes, 1, 4); // [3, 5, 7]// 克隆数组(深拷贝)
int[] clone = ArrayUtils.clone(primes);

5. 数组变身大法(类型转换)

// 包装类型转换
Integer[] boxed = ArrayUtils.toObject(primes);// 基本类型转换
int[] unboxed = ArrayUtils.toPrimitive(boxed);

三、高级"仙术"展示

1. 数组合并

String[] frontend = {"HTML", "CSS"};
String[] backend = {"Java", "Python"};
String[] fullstack = ArrayUtils.addAll(frontend, backend);
// ["HTML", "CSS", "Java", "Python"]

2. 数组反转

ArrayUtils.reverse(fullstack);
// ["Python", "Java", "CSS", "HTML"]

3. 数组填充

int[] empty = new int[5];
ArrayUtils.fill(empty, 42); // [42, 42, 42, 42, 42]

4. 空数组安全

// 安全处理null数组
String[] maybeNull = null;
String[] safeArray = ArrayUtils.nullToEmpty(maybeNull); // 返回空数组而非null

四、ArrayUtils的"修仙指南"

  1. 性能提示:频繁操作考虑先用List再转数组
  2. null安全:所有方法都处理null输入
  3. 多维数组:支持多维数组操作(如indexOf多维查找)
  4. 特殊比较:提供equals()方法比较数组内容

五、与传统方法的"功力对比"

操作原生写法代码量ArrayUtils代码量
添加元素5-7行1行
删除元素需要循环1行
查找元素需要循环1行
数组合并System.arraycopy1行

六、现代"御剑飞行"方案

// Java 8 Stream方案(适合复杂操作)
String[] filtered = Arrays.stream(fullstack).filter(s -> !s.equals("CSS")).toArray(String[]::new);// 与Collections配合使用
List<String> list = new ArrayList<>(Arrays.asList(fullstack));
list.add("JavaScript");
String[] updated = list.toArray(new String[0]);

七、总结

ArrayUtils就像是:

  • 数组扩容的"金箍棒"🔨
  • 元素操作的"筋斗云"☁️
  • 数组查找的"火眼金睛"👀
  • null安全的"避雷针"⚡

记住数组操作的真理:“直接操作数组就像用牙啃椰子,用对工具才是王道!”

最后送上数组操作速查表:

需求ArrayUtils方法示例
添加元素add() / addAll()add(array, element)
删除元素remove() / removeElement()remove(array, index)
查找元素indexOf() / contains()indexOf(array, value)
子数组subarray()subarray(array, start, end)
空数组转换nullToEmpty()nullToEmpty(null)
数组反转reverse()reverse(array)

相关文章:

ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变

各位数组操控师们好&#xff01;今天给大家带来的是Apache Commons Lang3中的ArrayUtils工具类。这个工具就像数组界的"孙悟空"&#xff0c;能让你的数组随心所欲地变大、变小、变长、变短&#xff0c;再也不用对着原生数组的"死板"叹气了&#xff01; 一…...

电脑温度怎么看 查看CPU温度的方法

监测电脑温度对于保持硬件健康非常重要&#xff0c;特别是在进行高强度运算、游戏或超频等操作时。过高的温度可能导致硬件性能下降&#xff0c;甚至损坏。本篇文章将介绍查看电脑温度的4种方法。 一、使用Windows内置工具查看CPU温度 Windows系统本身并不直接提供查看CPU温度…...

【合新通信】---浸没式液冷光模块化学兼容性测试方法

一、测试目的与核心挑战 测试目标 验证冷媒&#xff08;氟化液、矿物油等&#xff09;与光模块材料的化学稳定性&#xff0c;确保长期浸没环境下无腐蚀、溶胀或性能衰减。关键风险点&#xff1a;密封材料&#xff08;如硅胶、环氧树脂&#xff09;的溶解或老化&#xff1b;金…...

shell 循环

shell 循环while语句,shell循环until语句在上一篇shell流程控制 1.shell循环until语句 until 条件 #当后面的条件表达式为假的时候的才循环,为真的时候就停止了 do 循环体 done [root@linux-server script]# cat until.sh (1) #!/bin/bash x=1 until [ $x -ge 10 ] 大于…...

【产品经理】常见的交互说明撰写方法

在产品原型设计中&#xff0c;交互说明是确保开发团队准确理解设计意图的关键文档。以下是常见的交互说明撰写方法及其应用场景&#xff0c;帮助您系统化地传达交互逻辑&#xff1a; 文字描述法 方法&#xff1a;用自然语言详细描述操作流程、反馈及规则。 适用场景&#xff…...

使用kubeadmin 部署k8s集群

成功搭建一个 Kubernetes 1.28.2 集群,包含以下组件和状态: 集群拓扑 1 个 Master 节点 IP:10.1.1.100 角色:control-plane 2 个 Worker 节点 Node2:10.1.1.101 Node3:10.1.1.102 核心组件状态 所有节点通过 kubectl get nodes 显示为 Ready。 核心 Pod(如 etc…...

二项式分布html实验

二项式分布html实验 本文将带你一步步搭建一个纯前端的二项分布 Monte-Carlo 模拟器。 只要一个 HTML 文件&#xff0c;打开就能运行&#xff1a; 动态输入试验次数 n、成功概率 p 与重复次数 m点击按钮立刻得到「模拟频数 vs 理论频数」柱状图随着 m 增大&#xff0c;两组柱状…...

[基础] Windows PCIe设备驱动框架与开发实践深度解析

Windows PCIe设备驱动框架与开发实践深度解析 1. PCIe设备驱动技术背景 PCI Express&#xff08;Peripheral Component Interrupt Express&#xff09;作为现代计算机系统的核心互连标准&#xff0c;其驱动程序开发涉及复杂的内核模式编程。Windows系统通过模块化的驱动架构支…...

面向智能家居安全的异常行为识别与应急联动关键技术研究与系统实现(源码+论文+部署讲解等)

需要资料&#xff0c;请文末系 一、平台介绍 3D家庭实景 - 动热力图 多模态看板 跌倒行为分析 二、论文内容 在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2dfe7f45d3ce42399e0df9535870d26d.png) bash 摘要 Abstract第一章 绪论 1.1 研究背景与动机 o1.1.1…...

根据JSON动态生成表单表格

根据JSON动态生成表单表格 一. 子组件 DynamicFormTable.vue1,根据JSON数据动态生成表单表格,支持表单验证JS部分1.1,props数据1.2,表单数据和数据监听1.3,自动验证1.4,表单验证1.5,获取表单数据1.6,事件处理1.7,暴露方法给父组件2,HTML部分二,父组件1, 模拟数据2,…...

spring OncePerRequestFilter 作用

概要 OncePerRequestFilter 是 Spring Web 提供的一个抽象滤器基类&#xff0c;用于保证在一次 HTTP 请求的整个分派过程中&#xff0c;该滤器仅执行一次&#xff0c;无论该请求经历了多少次内部转发&#xff08;forward&#xff09;、包含&#xff08;include&#xff09;或错…...

关于开源大模型(如 LLaMA、InternLM、Baichuan、DeepSeek、Qwen 等)二次开发或训练经验的关键点和概述

以下是适合初学者理解的关于开源大模型&#xff08;如 LLaMA、InternLM、Baichuan、DeepSeek、Qwen 等&#xff09;二次开发或训练经验的关键点和概述&#xff0c;&#xff1a; 关键点&#xff1a; 研究表明&#xff0c;二次开发通常涉及微调模型以适应特定任务&#xff0c;需…...

promethus基础

1.下载prometheus并解压 主要配置prometheus.yml文件 在scrape_configs配置项下添加配置(hadoop202是主机名)&#xff1a; scrape_configs: job_name: ‘prometheus’ static_configs: targets: [‘hadoop202:9090’] 添加 PushGateway 监控配置 job_name: ‘pushgateway’…...

26考研 | 王道 | 数据结构 | 第八章 排序

第八章 排序 文章目录 第八章 排序**8.1** 排序的基本概念**8.2 插入排序****8.2.1 直接插入排序****8.2.2 折半插入排序****8.2.3 希尔排序** 8.3 交换排序8.3.1 冒泡排序8.3.2 快速排序 8.4 选择排序8.4.1 简单选择排序8.4.2 堆排序堆的概念&#xff1a;建立大根堆的代码堆排…...

SecMulti-RAG:兼顾数据安全与智能检索的多源RAG框架,为企业构建不泄密的智能搜索引擎

本文深入剖析SecMulti-RAG框架&#xff0c;该框架通过集成内部文档库、预构建专家知识以及受控外部大语言模型&#xff0c;并结合保密性过滤机制&#xff0c;为企业提供了一种平衡信息准确性、完整性与数据安全性的RAG解决方案&#xff0c;同时有效控制部署成本。 企业环境中A…...

kubesphere 单节点启动 etcd 报错

kubekey安装 ./kk create cluster -f config-sample.yaml --with-local-storage 时报错 etcd health check failed: Failed to exec command: sudo -E /bin/bash -c "export ETCDCTL_API2;export ETCDCTL_CERT_FILE/etc/ssl/etcd/ssl/admin-node1.pem;export ETCDCTL_KEY_…...

femap许可常见问题及解决方案

在使用Femap进行电磁仿真分析时&#xff0c;许可证管理是一个关键环节。然而&#xff0c;许多用户在许可证使用过程中可能会遇到各种问题。本文旨在解答关于Femap许可的常见疑问&#xff0c;并提供相应的解决方案&#xff0c;帮助您更顺畅地使用Femap许可证。 一、常见问题 许…...

游戏引擎学习第244天: 完成异步纹理下载

启动并运行游戏&#xff0c;注意到我们的纹理没有被下载 我们将继续完成游戏的开发。昨天&#xff0c;我们已经实现了多线程的纹理下载&#xff0c;但并没有时间调试它&#xff0c;因此纹理下载功能目前并没有正常工作。我们只是写了相关的代码&#xff0c;但由于大部分时间都…...

【安全扫描器原理】TCP/IP协议编程

【安全扫描器原理】TCP/IP协议编程 1.概述2.Windows Socket结构3.Windows socket转换类函数4.Windows Socket通信类函数 1.概述 TCP/IP协议是目前网络中使用最广泛的协议&#xff0c;Socket称为“套接口”​&#xff0c;最早出现在Berkeley Unix中&#xff0c;最初只支持TCP/I…...

Cuda-GDB Frame Unwind 管理(未完.)

在计算机编程中&#xff0c;Frame Unwind&#xff08;栈展开&#xff09; 是指函数调用栈的逆向操作&#xff0c;即在函数返回或异常发生时&#xff0c;系统逐层释放栈帧&#xff08;Stack Frame&#xff09;、恢复调用上下文的过程。以下是详细解释及其在 GPU编程&#xff08;…...

如何在IDEA中高效使用Test注解进行单元测试?

在软件开发过程中&#xff0c;单元测试是保证代码质量的重要手段之一。而IntelliJ IDEA作为一款强大的Java开发工具&#xff0c;提供了丰富的功能来支持JUnit测试&#xff0c;尤其是通过Test注解可以快速编写和运行单元测试。那么&#xff0c;如何在IDEA中高效使用Test注解进行…...

什么是访客鉴权?全面解析核心原理与CC防护应用实践

一、访客鉴权是什么&#xff1f; 访客鉴权&#xff08;Visitor Authentication and Authorization&#xff09;是系统对访问者进行身份验证和权限控制的过程&#xff0c;确保只有合法用户能够访问特定资源或执行特定操作。其核心目标是确认身份、控制权限、保障数据安全&#…...

DeepSeek大模型应用学习通知

随着人工智能在各领域深度融合发展&#xff0c;DeepSeek大模型迅速火爆全网&#xff0c;清华大学以最快的速度发布了DeepSeek从入门到精通使用技巧&#xff0c;能够更好的助力于企业和个人参与到AI研究和应用中&#xff0c;对于AI行业创新有重要意义&#xff0c;被誉为国运级的…...

时间序列预测模型比较分析:SARIMAX、RNN、LSTM、Prophet 及 Transformer

时间序列预测根据过去的模式预测未来事件。我们的目标是找出最佳预测方法&#xff0c;因为不同的技术在特定条件下表现出色。本文章将探讨各种方法在不同数据集上的表现&#xff0c;为你在任何情况下选择和微调正确的预测方法提供真知灼见。 我们将探讨五种主要方法&#xff1…...

快速了解redis,个人笔记

更多个人笔记&#xff1a;&#xff08;仅供参考&#xff0c;非盈利&#xff09; gitee&#xff1a; https://gitee.com/harryhack/it_note github&#xff1a; https://github.com/ZHLOVEYY/IT_note &#xff08;基于mac展示&#xff0c;别的可以参考&#xff09;接下来将直接…...

Dify依赖管理poetry切换为uv

Dify升级 1.3.0 后api的依赖管理从poetry切换为了 uv管理&#xff0c;但是官网暂时还没有更新。 升级 tag&#xff1a;Dify 1.3.0版本 在此记录一下 uv 依赖管理操作 使用方法 [重要事项] 在 v1.3.0 版本中&#xff0c;poetry 已被[ uv ](https://docs.astral.sh/uv/) 替代…...

VGA 接口静电防护方案

VGA(Video Graphics Array)即视频图形阵列&#xff0c;具有分辨率高、显示速 率快、颜色丰富等优点&#xff0c;亦称为 D-Sub 接口&#xff0c;在彩色显示器领域得到了广 泛的应用&#xff0c; 如笔记本、投影仪、LCD 液晶显示屏 等。VGA 接口主要用于连接 计算机与显示设备。当…...

MySQL 详解之用户、权限与审计:保障数据安全的基石

在数据库系统中,数据是核心资产,对其的访问必须受到严格控制。谁能连接到数据库?他们能看到哪些数据?能执行哪些操作(读、写、修改结构)?系统中的所有操作是否被记录以便追溯?这正是用户管理、权限系统和审计机制需要解决的问题。 在 MySQL 中: 用户 (Users): 负责认…...

力扣面试150题--环形链表和两数相加

Day 32 题目描述 思路 采取快慢指针 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public boolean hasCycle(ListNod…...

HMI与组态,自动化的“灵珠”和“魔丸”

在现代工业自动化领域&#xff0c;组态&#xff08;Configuration&#xff09;和人机界面&#xff08;HMI&#xff0c;Human-Machine Interface&#xff09;是两个核心概念&#xff0c;它们在智能化控制系统中发挥着至关重要的作用。尽管这两者看似简单&#xff0c;但它们的功能…...

AbMole| CU-CPT-8m(CAS号125079-83-6;目录号M9746)

CU-CPT-8m是一种特异性的TLR8&#xff08;toll-like receptor 8&#xff09;拮抗剂&#xff0c;其IC50值为67 nM&#xff0c;Kd值为220 nM。 生物活性 CU-CPT-8m是一种特异性的TLR8&#xff08;toll-like receptor 8&#xff09;拮抗剂&#xff0c;其IC50值为67 nM&#xff0c;…...

【网络入侵检测】基于源码分析Suricata的PCAP模式

【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全,欢迎关注与评论。 1. 概要 👋 本文聚焦于 Suricata 7.0.10 版本源码,深入剖析其 PCAP 模式的实现原理。通过系统性拆解初始化阶段的配置流程、PCAP 数据包接收线程的创建与运行机制,以及数据…...

【滑动窗口+哈希表/数组记录】Leetcode 438. 找到字符串中所有字母异位词

题目要求 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的异位词的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语&#xff0c;并使用所有原字母一次。 示例 1 输入&#xff1a;s…...

uniapp自定义封装tabbar

uniapp自定义封装tabbar 开发原因: 有很多时候 小程序并没有其类目 需要通过配置发布审核&#xff0c; ps&#xff1a;需要去掉项目pages.json tabbar配置&#xff0c;不然重进会显示默认&#xff0c;跳转页面不能uni.switchTab。 组件tabbar <template><viewclass&…...

uni-app云开发总结

uni-app云开发总结 云开发无非就三个概念&#xff1a;云数据库、云函数、云存储 uni-app中新增了一个概念叫做云对象&#xff0c;它其实就是云函数的加强版&#xff0c;它是导出的一个对象&#xff0c;对象中可以包含多个操作数据库的函数&#xff0c;接下来咱们就详细对uni-…...

uniapp-商城-37-shop 购物车 选好了 进行订单确认3 支付栏

支付栏 就是前面用的 car-Layout 在shop也用来这个组件 只是在那里用来的是购物车。 1、 样式 我们开始进入这个页面是点击的shop的购物篮 到这里就变成了支付栏 其实他们是同一个组件 只是做了样式区分 2、具体看看样式和代码 2.1 消失了购物车和改变了按钮名字 如何…...

搜索二叉树-key的搜索模型

二叉搜索树(Binary Search Tree, BST)是一种重要的数据结构&#xff0c;它有两种基本模型&#xff1a;Key模型和Key/Value模型。 一、Key模型 1.基本概念 Key模型是二叉搜索树中最简单的形式&#xff0c;每个节点只存储一个键值(key)&#xff0c;没有额外的数据值(value)。这…...

Qt ModbusSlave多线程实践总结

最近项目中用到了ModbusSlave&#xff0c;也就是Modbus从设备的功能&#xff0c;之前用的基本都是master设备&#xff0c;所以读取数据啥的用单线程就行了&#xff0c;用 void WaitHelper::WaitImplByEventloop(int msec) {QEventLoop loop;QTimer::singleShot(msec, &loop…...

Leetcode刷题记录18——接雨水

题源&#xff1a;https://leetcode.cn/problems/trapping-rain-water/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述&#xff1a; 思路一&#xff1a; &#x1f31f; 本题核心思想&#xff1a;木桶效应 每个位置的“桶”&#xff1a;假设每个柱子的位…...

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤

以下是在 IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤&#xff1a; 步骤 1&#xff1a;创建 Maven Web 项目 新建项目 File -> New -> Project → 选择 Maven → 勾选 Create from archetype → 选择 maven-archetype-webapp。输入 GroupId&#xff08;如 com.examp…...

全球玻璃纸市场深度洞察:环保浪潮下的材料革命与产业重构(2025-2031)

一、行业全景&#xff1a;从传统包装到绿色经济的战略支点 玻璃纸&#xff08;Cellulose Film&#xff09;&#xff0c;即再生纤维素薄膜&#xff0c;以木浆、棉浆等天然纤维素为原料&#xff0c;通过碱化、黄化、成型等工艺制成&#xff0c;兼具透明性、柔韧性及100%生物降解性…...

提示js方法未定义,但是确实<textarea>标签未闭合。

1、问题现象。 Uncaught ReferenceError: showOtherDismantleFn is not defined 但是这个方法&#xff0c;在代码中明明存在。 #if($!{isNewEnergy})#if($!{batteryName} 宁德时代)<button class"btn btn-info btn-xs" onclick"showNingDismantleFn()&quo…...

spring中的@bean注解详解

在Spring框架中&#xff0c;Bean注解是用于显式声明一个Bean的核心方式之一&#xff0c;尤其在基于Java的配置中。Spring框架中的Bean注解实现原理涉及多个核心机制&#xff0c;包括配置类解析、Bean定义注册、动态代理及依赖注入等 一、Bean注解的作用 Bean用于标注在方法上&…...

计算机网络中的DHCP是什么呀? 详情解答

目录 DHCP 是什么&#xff1f; DHCP 的工作原理 主要功能 DHCP 与网络安全的关系 1. 正面作用 2. 潜在安全风险 DHCP 的已知漏洞 1. 协议设计缺陷 2. 软件实现漏洞 3. 配置错误导致的漏洞 4. 已知漏洞总结 举例说明 DHCP 与网络安全 如何提升 DHCP 安全性 总结 D…...

uniapp-商城-38-shop 购物车 选好了 进行订单确认4 配送方式1

配送方式在订单确认页面最上方&#xff0c;可以进行选中配送还是自提&#xff0c;这里先看看配送。 代码样式&#xff1a; 可以看出来是通过组件来实现的。组件名字是&#xff1a;delivery-layout 1、建立组件文件夹和页面&#xff0c;delivery-layout这里就只有配送 2、具体…...

粒子群优化算法(Particle Swarm Optimization, PSO)的详细解读

最近研究基于进化算法的神经网络架构搜索&#xff0c;仔细阅读了TEVC2023年发表的一篇NAS搜索的文章&#xff0c;觉得收益颇多&#xff0c;对比NSGA-2&#xff0c;这里给出PSO的详细解释。【本人目前研究的是多目标进化算法&#xff0c;欢迎交流、留言】 文章题目是&#xff1…...

大模型在直肠癌预测及治疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 研究方法与创新点 二、大模型技术概述 2.1 大模型的基本原理 2.2 常见大模型类型及特点 2.3 在医疗领域的应用进展 三、直肠癌预测相关数据收集与处理 3.1 数据来源 3.2 数据清洗与预处理 3.3 特征工程 四、大…...

【C++】继承----下篇

文章目录 前言一、实现一个不能继承的类二、友元与继承三、继承与静态成员四、多继承以及菱形继承问题1.继承模型&#xff1a;2.菱形继承的问题3.虚拟继承解决数据冗余和二义性的原理4.虚拟继承的原理 五、继承的总结和反思1.继承和组合 总结 前言 各位好呀!今天呢我们接着讲继…...

windows安装jax和jaxlib的教程(cuda)成功安装

本文你将解决3个问题&#xff1a;1、jaxlib没有安装的问题&#xff1b;2、python3.9以上&#xff08;不可忽略&#xff09;、cuda12.1&#xff08;可忽略&#xff09;以上配置要求不满足的问题&#xff1b;3、numpy版本太高的问题。 1、问题描述 当你直接pip install jax或者c…...

软考【网络工程师】2023年5月上午题答案解析

1、固态硬盘的存储介质是()。 A 光盘 B 闪存 C 软盘 D 磁盘 答案是 B。 固态硬盘(Solid State Drive),简称 SSD,是用固态电子存储芯片阵列制成的硬盘,其存储介质是闪存(Flash Memory)。闪存具有非易失性,即在断电后仍能保留存储的数据,且读写速度快、抗震性强、能…...