Java里size方法和length有什么区别_Java集合与数组对比说明
发布时间 - 2026-01-07 00:00:00 点击率:次调用 list.length 会报错,因为 List 是对象,没有 length 属性;数组才有 length 字段,而 List 使用 size() 方法获取元素个数,二者类型不同、不可互换。
size() 是集合的方法,length 是数组的属性,二者不能混用——写错会直接编译失败。
为什么调用 list.length 会报错?
因为 List(如 ArrayList)是对象,没有 length 这个属性;而数组(如 String[])是 Java 的原生类型,length 是其唯一公开的、只读的字段。
-
String[] arr = {"a", "b"};→ 正确:arr.length(返回2) -
List→ 错误:list = Arrays.asList("a", "b"); list.length(编译报错:cannot find symbol) - 正确写法只有:
list.size()
size() 和 length() 容易混淆?
是的,但它们根本不在同一维度:length() 是 String 类的方法,和集合无关;size() 是所有 Collection 接口实现类(ArrayList、HashSet、LinkedLi 等)都必须提供的方法;
stMap(如 HashMap)也提供 size(),表示键值对数量。
-
"hello".length()→ 返回5(字符串字符数) -
new ArrayList().size()→ 返回0(当前元素个数) -
new HashMap().size()→ 返回0(当前 key-value 对数)
底层其实都靠数组?那 size() 性能如何?
大多数集合(如 ArrayList)内部确实用数组存储,size() 方法只是返回一个维护好的计数器字段(如 ArrayList 中的 size 成员变量),不是遍历计算,所以是 O(1) 时间复杂度——和访问数组 length 一样快。
- 别担心性能,放心调用
size() - 但注意:
size()返回的是“当前元素个数”,不是容量(capacity)。比如new ArrayList(100)刚创建时size()是0,而内部数组长度可能是10或100(取决于实现) - 数组的
length永远等于其分配的总槽位数,不管里面是不是null
String[] arr = new String[5]; System.out.println(arr.length); // 输出 5 —— 即使全是 null Listlist = new ArrayList<>(); list.add("x"); System.out.println(list.size()); // 输出 1 —— 只算已添加的元素
最常被忽略的一点:泛型擦除后,list.size() 仍是安全的运行时调用;而 arr.length 是编译期就确定的固定值——前者反映逻辑大小,后者反映物理空间。别用 size() 去判断数组,也别用 length 去查集合,Java 不会帮你自动转换。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
Laravel如何创建自定义Facades?(详细步骤)
如何快速搭建自助建站会员专属系统?
javascript基本数据类型及类型检测常用方法小结
如何用花生壳三步快速搭建专属网站?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
微信小程序 input输入框控件详解及实例(多种示例)
如何快速搭建高效可靠的建站解决方案?
Android利用动画实现背景逐渐变暗
高性价比服务器租赁——企业级配置与24小时运维服务
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel如何创建自定义中间件?(Middleware代码示例)
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
Android使用GridView实现日历的简单功能
微信小程序 五星评分(包括半颗星评分)实例代码
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
如何在阿里云虚拟服务器快速搭建网站?
个人摄影网站制作流程,摄影爱好者都去什么网站?
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
html如何与html链接_实现多个HTML页面互相链接【互相】
Linux网络带宽限制_tc配置实践解析【教程】
如何快速生成专业多端适配建站电话?
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
Laravel集合Collection怎么用_Laravel集合常用函数详解
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
Python进程池调度策略_任务分发说明【指导】
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
如何为不同团队 ID 动态生成多个非值班状态按钮
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
在线制作视频网站免费,都有哪些好的动漫网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
javascript中对象的定义、使用以及对象和原型链操作小结
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
Laravel如何使用Eloquent进行子查询
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
详解jQuery中基本的动画方法
大型企业网站制作流程,做网站需要注册公司吗?
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
教你用AI润色文章,让你的文字表达更专业
Laravel怎么在Controller之外的地方验证数据
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
如何快速搭建安全的FTP站点?
如何快速建站并高效导出源代码?
Laravel如何升级到最新版本?(升级指南和步骤)
上一篇:apache web服务器是什么
下一篇:prtsc键怎么用
上一篇:apache web服务器是什么
下一篇:prtsc键怎么用

