2016-08-18 76 views
0

我有像这样的字符串列表。字符串解析到数组的最佳算法

"Section 1/Part 1" 
"Section 2/Part 1" 
"Section 2/Part 2" 
"Section 3/Part 1" 
"Section 3/Part 2" 
"Section 3/Part 3" 

我要分析它的数组列表中的数组列表如下:

Section 1 -> Part 1 
Section 2 -> Part 1 
      -> Part 2 
Section 3 -> Part 1 
      -> Part 2 
      -> Part 3 

一个简单的代码示例,请于理解算法

+0

用'/'分割,然后根据第一项进行分类。你的编程语言是什么? – Kasramvd

+0

我已经把它分开了。我想用它创建数组 –

+0

你尝试了什么? – Winter

回答

3

这是java的解决方案:

import java.util.*; 

public class a { 
    public static void main(String[] args) { 
     List<String> input = new ArrayList<String>(); 
     input.add("Section 1/Part 1"); 
     input.add("Section 1/Part 2"); 
     input.add("Section 2/Part 1"); 
     // ... 

     HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>(); 

     for (String s : input) { 
     String[] parts = s.split("/"); 
     String key = parts[0]; 
     String value = parts[1]; 

     ArrayList<String> list = map.get(key); 
     if (list == null) { 
      list = new ArrayList<String>(); 
      map.put(key, list); 
     } 

     list.add(value); 
     } 
    } 
} 
+0

谢谢兄弟:) –

2

这里是Python中的方法,该方法将它们存储在词典:

>>> from collections import defaultdict 
>>> d = defaultdict(list) 
>>> 
>>> for sec, part in [i.split('/') for i in arr]: 
...  d[sec].append(part) 
... 
>>> 
>>> d 
defaultdict(<type 'list'>, {'Section 1': ['Part 1'], 
          'Section 2': ['Part 1', 'Part 2'], 
          'Section 3': ['Part 1', 'Part 2', 'Part 3']}) 
>>> 
+0

谢谢你的回答。你能用Java写这个吗? –