可以使用Map<String, List<String>>
做到這一點。
- 首先逐行讀取文件中的行使用
"/"
(使用BufferedReader
或同等學歷)
- 分割字符串,並得到主文件夾(你的情況
folder1, folder2
)
- 添加主文件夾爲密鑰至
map
,如果密鑰存在獲取值爲List<String>
並添加路徑(即B/H, A
等)
編輯:完整列表
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ParseFolders {
public static Map<String, List<String>> parse(List<String> input) {
Map<String, List<String>> res = new HashMap<String, List<String>>();
for(String s : input) {
String [] arr = s.split("/");
String key = arr[0];
String val = s.substring(s.indexOf("/"));
if(res.containsKey(key)) {
res.get(key).add(val);
}
else {
List<String> folders = new ArrayList<String>();
folders.add(val);
res.put(key, folders);
}
}
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
List<String> input = new ArrayList<String>();
input.add("folder1/A");
input.add("folder1/B/H");
input.add("folder1/C/F");
input.add("folder2/D");
input.add("folder2/E");
input.add("folder2/F");
input.add("folder3/G");
input.add("folder3/H");
input.add("folder3/I");
System.out.println(parse(input));
}
}
和輸出
{folder1=[/A, /B/H, /C/F], folder3=[/G, /H, /I], folder2=[/D, /E, /F]}
無可厚非接受這是答案,但k [1]並沒有真正的工作..當你有一個字符串像folder1/A/B,k [1]只佔帳戶/ A和om其B .. – sanbhat
謝謝。編輯它 – Jatin