Мне нужно реализовать в Java код, который был реализован давно в Delphi, я пытаюсь использовать LinkedHashMap (в Delphi использовался TStringlist), потому что мне нужно получить индекс элементов по мере их вставки, проблема в том что оно не работает ...
Delphi
sIni:string;
sl, slProfs, slHoras, slDias, slAula: TStringlist;
slHoras := TStringlist(slProfs.Objects[p]);
h := slHoras.indexOf(sIni);
if h < 0 then
begin
sl := TStringlist.Create;
sl.sorted := true;
for i := 1 to 7 do
sl.AddObject(IntToStr(i), TStringlist.Create);
h := slHoras.AddObject(sIni, sl);
end;
slDias := TStringlist(slHoras.Objects[h]);
slAula := TStringlist(slDias.Objects[iDia - 1]);
реализация, которую я пытаюсь сделать в Java
HashMap<Integer, HashMap<Integer, List<String>>> slProfs = new LinkedHashMap<>();
HashMap<Integer, List<String>> sl = new LinkedHashMap<>();
HashMap<String, HashMap<Integer, List<String>>> slHoras = new LinkedHashMap<>();
HashMap<String,String> slAula = new LinkedHashMap<>();
List <String> slDias = new ArrayList<>();
if (h < 0) {
for (i = 1; i <= 7; i++) {
sl.put(i, new ArrayList<String>());
}
slHoras.put(sIni, sl);
indicesslHoras = new ArrayList<String>(slHoras.keySet()); // <== Set to List
h = indicesslHoras.indexOf(sIni);
}
Я не могу получить объект из положения h
используя LinkedHashMap, как это сделано здесь:
slDias := TStringlist(slHoras.Objects[h]);
slAula := TStringlist(slDias.Objects[iDia - 1]);
Код в Delphi реализован с использованием StringList внутри другого StringList с индексом ...
Является ли этот подход с использованием LinkedHashMap лучшим для транскрибирования этого кода в Java?