Ниже приведен код, который служит цели.Это не оптимизировано полностью.Но это работает.
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}]} #####################################