以下是用于目的的代码。它没有完全优化。但它正在工作。
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
/**
*
*/
/**
* @author KishorRaskar
*
*/
public class Main {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// pass the path to the file as a parameter
File file =
new File("C:\\Data\\FAB\\WorkSpace\\Test\\MyCode\\test.txt");
Scanner sc = new Scanner(file);
List<HashMap> mapList = new ArrayList<>();
HashMap<String, String> dataMap = null;
HashMap<String, List<HashMap<String, String>>> dataMapList = new HashMap<>();
while (sc.hasNextLine()) {
String line = sc.nextLine();
if(null == line || line.isEmpty()) {
continue;
}
String[] dataArray = line.split("\\|");
//System.out.println(Arrays.toString(dataArray));
String dataMapKey = dataArray[3].trim();
String dataMapValue = dataArray[4].trim();
String dataMapListKey = dataArray[2].trim();
if(!dataMapList.containsKey(dataMapListKey)) {
dataMapList.put(dataMapListKey, new ArrayList<>());
dataMapList.get(dataMapListKey).add(new HashMap<>());
}
dataMapList.get(dataMapListKey).get(0).put(dataMapKey, dataMapValue);
//System.out.println(line);
}
System.out.println("###############################");
System.out.println(dataMapList);
System.out.println("###############################");
}
}
输入:test.txt
1 |素食卷轴| VS5 | 3 | 6.99
2 |素食卷轴| VS5 | 5 | 8.99
3 |蓝莓松饼| MB11 | 2 | 9.95
4 |蓝莓松饼| MB11 | 5 | 16.95
5 |蓝莓松饼| MB11 | 8 | 24.95
6 |羊角面包| CF | 3 | 5.95
7 |羊角面包| CF | 5 | 9.95
8 |羊角面包| CF | 9 | 16.99
输出:
###############################
{CF=[{3=5.95, 5=9.95, 9=16.99}], MB11=[{2=9.95, 5=16.95, 8=24.95}], VS5=[{3=6.99, 5= 8.99}]}
###############################