String的toArray()方法使用遇到的不懂

笨小孩吖 2019-11-08 04:58:11
public static void main(String[] args) {
// SpringApplication.run(DemoApplication.class, args);


Map<String, String> map = new HashMap<String, String>();

map.put("xiaocui1", "gongchen");
map.put("xiaocui2", "daima");
map.put("xiaocui3", "xuexi");
map.put("xiaocui4", "dagong");
map.put("xiaocui5", "dagong");

Set<String> strings = map.keySet();
System.out.println(strings.toArray());
String[] keys = map.keySet().toArray(new String[0]);
for (String key: keys) {
System.out.println(key);
}
System.out.println("-----分割线-----");

}





为什么需要 new String[0] 有什么作用,为什么参数是0


上面的程序执行结果




...全文
1391 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT_熊 2019-11-08
  • 打赏
  • 举报
回复
发帖及时结贴啊,把我骗进来,看楼上几位回答的都是对的,我还来干啥!!
笨小孩吖 2019-11-08
  • 打赏
  • 举报
回复 1
引用 1 楼 人生呐 的回复:
你要先搞清楚这个toArray()方法后面的参数是干嘛用的,他也可以直接toArray()不加参数,这样获取到的是一个Object数组,但是你这里需要String数组,所以后面的参数就是指定一个你所需类型的数组,当你传了String类型的那么返回的就是String类型的数组,而你new String[0]的意思就是你要将得到的数组放到一个容量为0的数组中,他就会自动判断,返回的数组明显长度是大于0的,他就会自动又分配一个你指定类型的能容纳返回数据长度的新数组,所以你这里的String[0]的作用仅仅是告诉他你要返回什么类型的数组而已,你也可以写String[5]啊,但是调用之前你并不知道里面有多少数据,所以写0给他自己去分配是最好的
天涯若风 2019-11-08
  • 打赏
  • 举报
回复
ml_dark 2019-11-08
  • 打赏
  • 举报
回复 1
一样的,new String[0]是指明转换的数组类型为字符串数组 不指定参数,toArray()返回的Object[],所以输出的是[Ljava.lang.Object 至于参数0,keyset会根据你的大小来判断是否输出的数组长度,如果参数大小超出实际数据的长度,以你传输的参数为准,比如toArray(new String[123]),他就返回123长度的数组,不管你实际数据有没有这么大。 传入0是为了自适应实际数据大小,节省点空间
  • 打赏
  • 举报
回复 3
你要先搞清楚这个toArray()方法后面的参数是干嘛用的,他也可以直接toArray()不加参数,这样获取到的是一个Object数组,但是你这里需要String数组,所以后面的参数就是指定一个你所需类型的数组,当你传了String类型的那么返回的就是String类型的数组,而你new String[0]的意思就是你要将得到的数组放到一个容量为0的数组中,他就会自动判断,返回的数组明显长度是大于0的,他就会自动又分配一个你指定类型的能容纳返回数据长度的新数组,所以你这里的String[0]的作用仅仅是告诉他你要返回什么类型的数组而已,你也可以写String[5]啊,但是调用之前你并不知道里面有多少数据,所以写0给他自己去分配是最好的

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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