Java基础之list map和数组的输出格式问题

菠萝印象威 2020-09-21 11:56:07
很多初学者或者已经工作的人可能都会对数组和集合有所混淆,比如输出格式举个例子 数组输出格式:[1,2,3] map输出格式 map={a=1,b=2,c=3} list输出格式list=[1,2,3,4] 以下有几个问题 1. list和map都是java容器中的集合,为什么两者输出格式不同,为何list使用的是方括号[],而不是代表集合的{} 2. 数组输出的是[],list也是,它们俩是否有某种关系 3. 数组输出是[],为何定义时却是 int[] i=new int[]{0,1,2,3},赋值为何是使用集合。和数组的另一种定义int[] i=new int[6]有着本质不同,谢谢。
...全文
1383 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2020-09-21
  • 打赏
  • 举报
回复
引用 2 楼 菠萝印象威 的回复:
感谢讲解,因为在数学中,集合一般都是用大括号{}来存储数据元素,[]只是用来描述数据的区间,因为一般情况我们只在乎,集合的元素,而不在乎数据的存储。

数学和计算机是两个领域,即使计算机离不开数学,所以数学符号在计算机领域不一定适用(也就是计算机可能给符号赋予了新的意义)。以后你看到json字符串,你还会看到 {} 表示对象,比如 {a=1,b=2,c=3}表示一个对象,a,b,c表示属性,1,2,3是属性的值 。所以你不能只站在数学的角度来看待计算机领域的符号。
KeepSayingNo 2020-09-21
  • 打赏
  • 举报
回复
Array,Collection(List, Set),Map是三种不同的数据结构
菠萝印象威 2020-09-21
  • 打赏
  • 举报
回复
引用 1 楼 qybao的回复:
1 没有为什么,这是两种不同的数据结构,所以toString方法的实现不同(结果不同)。就好比Object和Calendar都是对象,打印结果也不同,你能问为什么吗?toString方法没有规定必须怎么实现,想怎么实现就怎么实现。 2 数组和list有一定的相似性,如都可以通过下标访问数据等等(只不过前者是事先分配内存大小,后者是动态分配内存大小)。所以toString方法也相似。其实list的底层实现也是用数组,具体可以自己看源码。 3 {}不是集合赋值,而是在声明数组的同时给数组元素赋值,这种形式只有在数组声明的同时使用,声明后不能对数组整体赋值,只能单独对数组元素赋值。所以和new int[6]的本质没什么不同,只是前者把数组元素的初始值也设定了,而new int[6]的每个元素的初始值是默认值0。
感谢讲解,因为在数学中,集合一般都是用大括号{}来存储数据元素,[]只是用来描述数据的区间,因为一般情况我们只在乎,集合的元素,而不在乎数据的存储。
qybao 2020-09-21
  • 打赏
  • 举报
回复
1 没有为什么,这是两种不同的数据结构,所以toString方法的实现不同(结果不同)。就好比Object和Calendar都是对象,打印结果也不同,你能问为什么吗?toString方法没有规定必须怎么实现,想怎么实现就怎么实现。 2 数组和list有一定的相似性,如都可以通过下标访问数据等等(只不过前者是事先分配内存大小,后者是动态分配内存大小)。所以toString方法也相似。其实list的底层实现也是用数组,具体可以自己看源码。 3 {}不是集合赋值,而是在声明数组的同时给数组元素赋值,这种形式只有在数组声明的同时使用,声明后不能对数组整体赋值,只能单独对数组元素赋值。所以和new int[6]的本质没什么不同,只是前者把数组元素的初始值也设定了,而new int[6]的每个元素的初始值是默认值0。

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧