当前位置: 代码网 > it编程>编程语言>Java > java11新特性之集合转换为数组的方法

java11新特性之集合转换为数组的方法

2024年06月17日 Java 我要评论
java11引入了一种将带有泛型的集合转换为带有泛型的数组的简单方法。java11之前使用toarray方法对于list,你可以直接使用toarray方法,但需要注意,toarray方法默认返回一个o

java11引入了一种将带有泛型的集合转换为带有泛型的数组的简单方法。

java11之前

使用toarray方法

对于list,你可以直接使用toarray方法,但需要注意,toarray方法默认返回一个object[]数组,你可能需要将其强制转换为正确的类型。

list<string> list = arrays.aslist("a", "b", "c");
object[] strobjectarray = list.toarray();

这样转出来的数组是object类型,在使用的时候还需要进行强制类型转换。

在java 11及之前,推荐使用这种方式来避免不必要的数组复制:

string[] array = list.toarray(new string[0]);

在java 11之前,你可能会看到这样的代码:

string[] array = list.toarray(new string[list.size()]);

这种方式在java 11之前也是有效的,但可能导致不必要的数组复制

但从java 9开始,推荐使用new type[0]作为toarray方法的参数,因为它可以避免在集合大小已知时的不必要数组创建和复制。

使用流(streams)api

虽然这不是最直接的方法,但你可以使用流来转换集合为数组。这通常在需要更复杂的转换时更有用。

list<string> list = arrays.aslist("a", "b", "c");  
string[] array = list.stream().toarray(string[]::new);

在这个例子中,我们使用stream().toarray()方法,并传递一个构造函数引用(string[]::new)来指定数组的类型。这将返回一个正确类型的数组。

java11

java 11中,toarray方法可以传入intfunction参数。这种方式允许你更灵活地创建数组。

toarray方法的原型如下:
java.util.collection#toarray(java.util.function.intfunction<t[]>)

default <t> t[] toarray(intfunction<t[]> generator) {
    return toarray(generator.apply(0));
}

toarray方法的使用如下:

list<string> list = arrays.aslist("a", "b", "c");
string[] array = list.toarray(string[]::new);

这种方式使用方法引用string[]::new,简洁且高效。

到此这篇关于java11新特性之集合转换为数组的文章就介绍到这了,更多相关java11集合转换为数组内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com