String,String[]与ArrayList<String>互转

本文详细阐述了如何将字符串转换为字符串数组,并通过实例展示了使用split方法与数组转换为ArrayList的方法。同时,介绍了字符串分割参数的意义及如何利用split与Arrays.asList实现字符串数组到ArrayList的转换,提供了一个简单直观的操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

除非整个String转为String[]的子项,否则我们得知道要从String的以哪个分割点开始切割成多个小的string作为String[]子项。要是以前小编肯定会用分割点的位置来实现分割技术(当然是不靠谱的)。下面我已一个字符串“abc,def,ghi,jkl,mno”为例展开不靠谱级别的实现方式。

String str = "abc,def,ghi,jkl,mno";
int count = 0;
int startIndex = 0;
for (int j = 0; j < str.length(); j++) {
    int endIndex = str.indexOf(",", startIndex);
    if (endIndex > 0) {
        String child = str.substring(startIndex, endIndex);
        startIndex = endIndex + 1;
        System.out.println("strs[" + count + "]:" + child);
        count++;
    } else {
        break;
    }
}

转String集合运行结果输出

如上运行结果显示输出是完全符合小编的需求的。那么小编讲下实现原理
  1. 通过str.indexOf(“,”, startIndex);以startIndex为其实位置找到寻找第一个”,”的位置为endIndex;
  2. 在[startIndex,endIndex]区间获取上次截取到的位置至后面一个”,”位置上的文本内容;
  3. startIndex = endIndex + 1;销毁了掉”,”本身的存在,即以”,”后面的位置为起始点;

好了,既然小编已经不靠谱的实现了String转String[]得到了{“abc”,”def”,”ghi”,”jkl”,”mno”},那么下一步便继不靠谱的来将String[]转ArrayList吧。

String[] strs = {"abc","def","ghi","jkl","mno"};
List<String> strLs = new ArrayList<>();
for (int i = 0, k = strs.length; i < k ; i++){
    strLs.add(strs[i]);
}
System.out.println(strLs);

转List<String>运行结果输出

看到没有,是不是很腻害的样子。肯定会被嘲讽的说,都说上面不靠谱。那咱还是来点靠谱的吧,免得让大家误解了就不好了。
String str = "abc,def,ghi,jkl,mno";
String[] strs = str.split(",", 0);// StringString[]

for (int i = 0, k = strs.length; i < k; i++) {
    System.out.println("strs[" + i + "]:" + strs[i] + "; ");
}

List<String> strLs = Arrays.asList(strs);// String[]转ArrayList<String>
// String[] strs2 = strLs.toArray(new String[strLs.size()]);// ArrayList<String>反转String[]
System.out.println(strLs);

最靠谱的转换实现
看到一样的结果却是用str.split();与Arrays.asList();就这么简单的实现了,小编的心承受不了了。再说说str.split(String regularExpression, int limit);两个参数的用意吧,其中”regularExpression”比较好理解,就是用来切分字符串的分水岭。而limit是限制的意思,其所限制的不是原字符串长度,而是每个分割后的子块总数量,(limit = “0”代表不限制,超过最大可分割的数量最终结果只能是以最大的分割量为准)。为了方便理解还是贴上吧。

String str = "abc,def,ghi,jkl,mno";
String[] strs = str.split(",", 0);

for (int i = 0, k = strs.length; i < k; i++) {
    System.out.println("strs[" + i + "]:" + strs[i] + "; ");
}

limit = 0

String str = "abc,def,ghi,jkl,mno";
String[] strs = str.split(",", 1);

for (int i = 0, k = strs.length; i < k; i++) {
    System.out.println("strs[" + i + "]:" + strs[i] + "; ");
}

limit = 1

String str = "abc,def,ghi,jkl,mno";
String[] strs = str.split(",", 2);

for (int i = 0, k = strs.length; i < k; i++) {
    System.out.println("strs[" + i + "]:" + strs[i] + "; ");
}

limit = 2
以上为String[]转ArrayList的情况,那么同样的道理,应用以上技术来实现ArrayList反转至String[]。

这里写代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值