Arrays 字符串解析到数组的最佳算法
我有这样的字符串列表Arrays 字符串解析到数组的最佳算法,arrays,string,algorithm,parsing,Arrays,String,Algorithm,Parsing,我有这样的字符串列表 "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 ->
"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
请理解算法的一个简单代码示例这里是一种使用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']})
>>>
>>从集合导入defaultdict
>>>d=默认DICT(列表)
>>>
>>>对于sec,[i.split(“/”)中的部分,用于arr中的i]:
... d[秒]。追加(部分)
...
>>>
>>>d
defaultdict(,{'Section 1':['Part 1'],
“第二部分”:[“第一部分”、“第二部分”],
“第三部分”:[“第一部分”、“第二部分”、“第三部分”])
>>>
这里有一个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);
}
}
}
import java.util.*;
公共a类{
公共静态void main(字符串[]args){
列表输入=新的ArrayList();
输入。添加(“第1节/第1部分”);
输入。添加(“第1节/第2部分”);
输入。添加(“第2节/第1部分”);
// ...
HashMap=newHashMap();
for(字符串s:输入){
字符串[]部分=s.split(“/”);
字符串键=部件[0];
字符串值=部分[1];
ArrayList list=map.get(key);
if(list==null){
列表=新的ArrayList();
地图。放置(键、列表);
}
列表。添加(值);
}
}
}
与/
拆分,然后根据第一项进行分类。你的编程语言是什么?我已经把它拆分了。我想用它来创建数组你尝试了什么?谢谢你的回答。你能用Java写这个吗?