Java 带分隔字符串、字符串数组和 ArrayList<String> 之间的转换

简介: Java 带分隔字符串、字符串数组和 ArrayList 之间的转换太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

Java 带分隔字符串、字符串数组和 ArrayList<String> 之间的转换

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。


一、先来认识一下标题说的这三件东西,也许描述的不清楚,但有了下面的例子,就不会有歧义了

1、带分隔字符串是这样的:

    String seperateStr = "111,222,333,444,555,666,777";
以逗号分隔;也可以以其它字符或字符串进行分隔,或者有多个分隔;


2、字符串数组:

    String[] seperates = {"111", "222", "333", "444", "555", "666", "777"};

也可以

    String seperates[] = {"111", "222", "333", "444", "555", "666", "777"};

或者

    int arraySize = 7;
    String[] seperates = new String[arraySize ];
    seperates[0] = "111";
    seperates[0] = "222";
    seperates[0] = "333";
    seperates[0] = "444";
    seperates[0] = "555";
    seperates[0] = "666";
    seperates[0] = "777";
再或者

    String[] seperates = new String[]{"111", "222", "333", "444", "555", "666", "777"};

3、ArrayList<String>

    List seperateList = new ArrayList<String>();

二、如何在三件东西间转换呢?

1、带分隔字符串 与 字符串数组间转换

a、遍历拼接,从字符串数组转换成带分隔的字符串;

b、查分隔个数初始化字符串数组,再逐一查分隔位置取子串赋值给字符串数组元素;


上面提到这两种方法,确实很够底层,不过确实浪费时间,为什么 Java 的内置方法中没有像 iOS 中的方便处理方法呢:

        NSString *seperateStr = @"111,222,333,444,555,666,777";
        NSArray *seperates = [seperateStr componentsSeparatedByString:@","];
        
        NSString *seperateBackStr = [seperates componentsJoinedByString:@","];

别着急,Java 没自带,不妨找外援。

Apache Commons Lang

这是 Apache 提供的通用工具库,关于字符串工具 StringUtils 的详细文档见此页

    String[] seperates = StringUtils.split(seperateStr, ",");
    String resultStr = StringUtils.join(seperates, ",");
这不就有了吗!唯一的遗憾,功能不内聚,需要引入三方工具库。

实际上,Java 的 String 类提供了 split 方法,可以进行分隔转成数组,但相比上面库的功能,那可是捉襟见肘了:


String 类提供的分隔方法:


StringUtils 提供的分隔方法:



这个工具库的功能远不止于此,下面摘要部分:

2、字符串数组与 ArrayList<String> 之间的转换

这要借助于  Collections 类的方法来完成转换了。


将字符串数组中的元素一次性添加到 ArrayList<String> 中:

    Collections.addAll(seperateList, seperates);

将 ArrayList<String> 转换成 数组:

    String[] seperateStr = (String[]) seperateList.toArray();

3、至于 ArrayList<String> 与字符串之间的转换,可能意义会有所不同了

如果是想按上面的分隔方式,那么有上面的链条,足以进行转换了,确实没有太便捷的方法;

再有,就是 toString() 方法会以字符串形式呈现该 ArrayList 对象,仅描述而已,你也可以派生子类,重载 toString 方法,按你自已的意图来组织,或加个参数,传入分隔符。




目录
相关文章
|
30天前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
111 65
|
26天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
99 60
|
18天前
|
Java 索引 容器
Java ArrayList扩容的原理
Java 的 `ArrayList` 是基于数组实现的动态集合。初始时,`ArrayList` 底层创建一个空数组 `elementData`,并设置 `size` 为 0。当首次添加元素时,会调用 `grow` 方法将数组扩容至默认容量 10。之后每次添加元素时,如果当前数组已满,则会再次调用 `grow` 方法进行扩容。扩容规则为:首次扩容至 10,后续扩容至原数组长度的 1.5 倍或根据实际需求扩容。例如,当需要一次性添加 100 个元素时,会直接扩容至 110 而不是 15。
Java ArrayList扩容的原理
|
12天前
|
索引 Python
String(字符串)
String(字符串)。
17 3
|
16天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
36 6
|
22天前
|
存储 Java 索引
Java中的数据结构:ArrayList和LinkedList的比较
【10月更文挑战第28天】在Java编程世界中,数据结构是构建复杂程序的基石。本文将深入探讨两种常用的数据结构:ArrayList和LinkedList,通过直观的比喻和实例分析,揭示它们各自的优势与局限,帮助你在面对不同的编程挑战时做出明智的选择。
|
1月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
31 4
|
1月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
50 15
|
1月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
30 2
|
1月前
|
安全 Java 程序员
Java集合之战:ArrayList vs LinkedList,谁才是你的最佳选择?
本文介绍了 Java 中常用的两个集合类 ArrayList 和 LinkedList,分析了它们的底层实现、特点及适用场景。ArrayList 基于数组,适合频繁查询;LinkedList 基于链表,适合频繁增删。文章还讨论了如何实现线程安全,推荐使用 CopyOnWriteArrayList 来提升性能。希望帮助读者选择合适的数据结构,写出更高效的代码。
59 3
下一篇
无影云桌面