如何将Set直接转成数组

 更新时间:2022年10月31日 16:00:17   作者:我家有只小熊二  
这篇文章主要介绍了如何将Set直接转成数组,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Set直接转成数组

例子

public class Test{
    
    public void test1(){
        Set<String> set = new HashSet<>();
        set.add("1");
        set.add("2");
        set.add("3");
        set.add("4");
        set.add("5");
        set.add("6");
    }
}

错误方式:

String[] arr = (String[]) set.toArray();
for(String str: arr){
    System.out.println(str)
}

正确的方式:

String[] arr = set.toArray(new String[set.size()]);
for(String str: arr){
    System.out.println(str)
}

Set,List转String数组

Set转String数组直接用其toArray()方法即可

注意事项如下

        Object[] array = set.toArray();
        // 错误!!!!!!!
        String[] targetFail = (String[]) array;
        错误信息如下:
ERROR 2019-06-04 17:43:13 [http-nio-9008-exec-7] com.wii.spring.framework.exception.GlobalExceptionResolver.exceptionHandler(GlobalExceptionResolver.java:106) - error:[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
        at com.zjht.controller.OrderController.export(OrderController.java:457) ~[classes!/:0.0.1-SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_201]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) [spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) [spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:981) [spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:873) [spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) [tomcat-embed-core-8.5.37.jar!/:8.5.37]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:858) [spring-webmvc-5.0.12.RELEASE.jar!/:5.0.12.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.37.jar!/:8.5.37]                                                                                                                 

正确转换如下

private static void methodTwo(Set<String> set) {
		Object[] array = set.toArray();
		// 错误!!!!!!!
		String[] targetFail = (String[]) array;
		for (String str : targetFail) {
			System.out.println("目标数组:" + str);
		}
		// 正确
		String[] targetSuccess = set.toArray(new String[set.size()]);
		for (String str : targetSuccess) {
			System.out.println("目标数组:" + str);
		}
	}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在Linux上搭建一个Java部署环境的详细步骤

    在Linux上搭建一个Java部署环境的详细步骤

    这篇文章主要介绍了在Linux上搭建一个Java部署环境,安装jdk有很多种方式,但是我们这里推荐的是使用yum直接安装openjdk,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 基于Spring实现零重启自由编排任务的定时管理器

    基于Spring实现零重启自由编排任务的定时管理器

    我们发现,我们使用Spring自带的定时任务如果要有修改,那么就要修改代码,然后重启项目,所以本文就带大家实现一个零重启自由编排任务的定时管理器吧
    2023-07-07
  • 详解SSM框架下结合log4j、slf4j打印日志

    详解SSM框架下结合log4j、slf4j打印日志

    本篇文章主要介绍了详解SSM框架下结合log4j、slf4j打印日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • mybatisplus的逻辑删除问题

    mybatisplus的逻辑删除问题

    这篇文章主要介绍了mybatisplus的逻辑删除问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java获取mac地址的方法

    Java获取mac地址的方法

    这篇文章主要介绍了Java获取mac地址的方法,涉及java针对系统硬件及IO操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Java Collection集合遍历运行代码实例

    Java Collection集合遍历运行代码实例

    这篇文章主要介绍了Java Collection集合遍历运行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 如何使用BufferedReader循环读文件

    如何使用BufferedReader循环读文件

    这篇文章主要介绍了如何使用BufferedReader循环读文件的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 教你在Spring Boot微服务中集成gRPC通讯的方法

    教你在Spring Boot微服务中集成gRPC通讯的方法

    这篇文章主要介绍了教你在Spring Boot微服务中集成gRPC通讯的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java实现字符编码转换(utf-8/gbk)

    Java实现字符编码转换(utf-8/gbk)

    这篇文章主要为大家详细介绍了如何使用Java实现字符编码转换工具,主要针对UTF-8和GBK两种编码格式,文中的示例代码讲解详,需要的可以了解下
    2025-03-03
  • java计算值所占的百分比,结果为100%问题

    java计算值所占的百分比,结果为100%问题

    这篇文章主要介绍了java计算值所占的百分比,结果为100%问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论