java逗号分隔String字符串及数组、集合相互转换

 更新时间:2024年02月17日 10:12:51   作者:菜鸟笔记本  
我们在日常开发时会经常遇到将一个字符串按照逗号进行分割,这篇文章主要给大家介绍了关于java逗号分隔String字符串及数组、集合相互转换的相关资料,文中给出了详细的代码示例,需要的朋友可以参考下

1. 准备一个逗号分割字符串

String str = "小张,小王,小李,小赵";

2. 逗号分割字符串转换为集合(转换为集合之前会先转换为数组)

// 第一种:先用split将字符串按逗号分割为数组,再用Arrays.asList将数组转换为集合
List<String> strList1 = Arrays.asList(str.split(","));
// 第二种:使用stream转换String集合
List<String> strList2 = Arrays.stream(str.split(",")).collect(Collectors.toList());
// 第三种:使用stream转换int集合(这种适用字符串是逗号分隔的类型为int类型)
List<Integer> intList = Arrays.stream(str.split(",")).map(Integer::parseInt).collect(Collectors.toList());
// 第四种:使用Guava的SplitterString
List<String> strList3= Splitter.on(",").trimResults().splitToList(str);
// 第五种:使用Apache Commons的StringUtils(只用到了他的split)
List<String> strList4= Arrays.asList(StringUtils.split(str,","));
// 第六种:使用Spring Framework的StringUtils
List<String> strList5 =Arrays.asList(StringUtils.commaDelimitedListToStringArray(str));

3. 集合转换为逗号分隔的字符串

// 第一种:String.join(), JDK1.8+
str = String.join(",", strList1);
// 第二种:org.apache.commons.lang3.StringUtils. toArray():集合转换为数组
str = StringUtils.join(strList1.toArray(), ",");
// 第三种:需要引入hutool工具包
str = Joiner.on(",").join(strList1);
// 第四种:StringJoiner, JDK1.8+ 输出示例:START_小张,小王,小李,小赵_END
StringJoiner sj = new StringJoiner(",");
strList1.forEach(e -> sj.add(String.valueOf(e)));
// 在上面已经处理为逗号拼接的字符串,下面为补充
// 在连接之前操作字符串, 拼接前缀和后缀
StringJoiner sj2 = new StringJoiner(",", "START_", "_END");
strList1.forEach(e -> sj2.add(String.valueOf(e)));
// 第五种:Stream, Collectors.joining(), JDK1.8+
str = strList1.stream().collect(Collectors.joining(","));
// 在连接之前操作字符串, 拼接前缀和后缀. 输出示例:START_小张,小王,小李,小赵_END
str = strList1.stream().map(e -> {
    if (e != null) return e.toUpperCase();
    else return "null";
}).collect(Collectors.joining(",", "START_", "_END"));
// 第六种:使用Spring Framework的StringUtils
str = StringUtils.collectionToDelimitedString(strList1,",");

4. 数组转逗号分隔字符串

String [] arr = (String[])strList1.toArray();
// 第一种:使用StringUtils的join方法
str = StringUtils.join(arr, ",");
// 第二种:使用ArrayUtils的toString方法,这种方式转换的字符串首尾加大括号 输出示例:{小张,小王,小李,小赵}
ArrayUtils.toString(arr, ",");

补充:将一个Java字符串按逗号分割成一个列表(List)

可以使用Java的split()方法将字符串分割成字符串数组,然后将数组转换为列表。以下是一个示例代码:

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,orange";
        List<String> list = Arrays.asList(str.split(","));
        System.out.println(list);
    }
}

输出

[apple, banana, orange]

在上述代码中,我们使用split(",")方法将字符串str按逗号分割成一个字符串数组,然后使用Arrays.asList()方法将数组转换为列表。最后,我们打印输出列表的内容。
请注意,Arrays.asList()方法返回的是一个固定大小的列表,不支持对其进行添加或删除操作。如果需要进行修改操作,可以将其转换为ArrayList,如下所示:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,orange";
        List<String> list = new ArrayList<>(Arrays.asList(str.split(",")));
        System.out.println(list);
    }
}

总结 

到此这篇关于java逗号分隔String字符串及数组、集合相互转换的文章就介绍到这了,更多相关java逗号分隔String字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • RocketMQ broker 消息投递流程处理PULL_MESSAGE请求解析

    RocketMQ broker 消息投递流程处理PULL_MESSAGE请求解析

    这篇文章主要为大家介绍了RocketMQ broker 消息投递流程处理PULL_MESSAGE请求源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Spring Boot使用Redisson实现滑动窗口限流的项目实践

    Spring Boot使用Redisson实现滑动窗口限流的项目实践

    滑动窗口限流是一种流量控制策略,用于控制在一定时间内的请求频率,本文主要介绍了Spring Boot使用Redisson实现滑动窗口限流的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • IDEA中JetBrains Mono字体的正确安装姿势

    IDEA中JetBrains Mono字体的正确安装姿势

    在 JetBrains Mono 的设计阶段,它就充分考虑到了长时间工作可能导致的眼睛疲劳问题,比如字母的大小和形状、空间量、自然等宽平衡、不必要的细节、连字、以及难以区分的符号等,从而最终设计出了这么一款字体
    2021-06-06
  • Java中eq、ne、ge、gt、le、lt的含义详细解释

    Java中eq、ne、ge、gt、le、lt的含义详细解释

    Java中的比较运算符包括eq(等于)、ne(不等于)、ge(大于或等于)、gt(大于)、le(小于或等于)和lt(小于),这些运算符在控制流语句和条件语句中用于判断条件是否满足,从而决定程序的执行路径,需要的朋友可以参考下
    2024-11-11
  • SpringBoot 统一功能处理方案

    SpringBoot 统一功能处理方案

    在我们进行项目编写时,有时相同的一段代码在不同的地方使用多次,对于这种情况,spring 帮我们实现了统一功能处理,下面介绍一些常用的统一功能处理,感兴趣的朋友一起看看吧
    2025-04-04
  • springboot自定义redis序列化类解决increment操作失败的问题

    springboot自定义redis序列化类解决increment操作失败的问题

    这篇文章主要介绍了springboot自定义redis序列化类解决increment操作失败的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • SpringBoot整合OpenCV的实现示例

    SpringBoot整合OpenCV的实现示例

    这篇文章主要介绍了SpringBoot整合OpenCV的实现示例。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • java整数与byte数组的转换实现代码

    java整数与byte数组的转换实现代码

    这篇文章主要介绍了java整数与byte数组的转换实现代码的相关资料,需要的朋友可以参考下
    2017-07-07
  • 关于JAVA8的 Stream学习

    关于JAVA8的 Stream学习

    这篇文章主要介绍了JAVA8 Stream学习方法的相关资料,需要的朋友可以参考下面文章内容
    2021-09-09
  • Java中SynchronousQueue的底层实现原理剖析

    Java中SynchronousQueue的底层实现原理剖析

    BlockingQueue的实现类中,有一种阻塞队列比较特殊,就是SynchronousQueue(同步移交队列),队列长度为0。本文就来剖析一下SynchronousQueue的底层实现原理,感兴趣的可以了解一下
    2022-11-11

最新评论