当前位置: 代码迷 >> Java相关 >> 高效的字符串转集合的算法
  详细解决方案

高效的字符串转集合的算法

热度:26   发布时间:2016-04-22 20:56:29.0
求一个高效的字符串转集合的算法
现在有一个字符串,类似asd123123hjjk123lou123lou123,
我需要把这个字符串以123为分割按顺序存入集合,注意123
也要存入集合,即以123为分割将字符串所有内容存入集合
------解决思路----------------------
不知道有没有现成api
stringtokenizer貌似不能按一个字段分只能按字段拆分的分
String str = "asd123123hjjk123lou123lou123";
Pattern p = Pattern.compile("123");
Matcher m = p.matcher(str);
while(m.find()) {
list.add(m.start());
list.add(m.end());
}
list.add(0);
list.add(str.length());
Collections.sort(list);
int size = list.size();
for(int i=0; i<size - 1; i++) {
System.out.println(str.subSequence(list.get(i), list.get(i+1)));
}
我只想到这个。。。好像略低效

------解决思路----------------------

String str = "asd123123hjjk123lou123lou123";
String ss = str.replaceAll("123", "#123#");
System.out.println(ss);

 String[]  s = ss.split("#");
 for(String str1 : s){
 if(!str1.equals("")){
 System.out.println(str1);
 }
 }

------解决思路----------------------

        List<String> list = new ArrayList<String>();
        String s = "asd123123hjjk123lou123lou123";
        String[] aa = s.split("(?=123)");
        for (int i = 0; i < aa.length; i++) {
            if (aa[i].startsWith("123")) {
                list.add("123");
                if (aa[i].length() > 3) {
                    list.add(aa[i].substring(3));
                }
            } else if (!aa[i].isEmpty()) {
                list.add(aa[i]);
            }
        }
        System.out.println(list);
  相关解决方案