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

来源:互联网 发布:显示数据库字符集 编辑:程序博客网 时间:2024/05/16 01:49

除非整个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[]。

这里写代码片
0 0
原创粉丝点击