Я действительно застрял на этом. У меня уже есть этот код и вывод. Но я хочу улучшить и сделать его более сложным. Возможно ли это?Маска манипуляции Java HashMap ArrayList
String check = checkpoint1;
boolean passcheckpoint1= false;
int keyIndex = 0;
Map<String,ArrayList> hashMap = new HashMap();
List<String> keys = new ArrayList<String>();
ArrayList<String> nextValue = new ArrayList();
while(it.hasNext()){
line = it.nextLine();
if (line.contains(check)) {
passcheckpoint1 = true;
}
else if (passcheckpoint1) {
ArrayList<String> value = new ArrayList();
value.add(line);
hashMap.put(keys.get(keyIndex++), value);
}
else {
keys.add(line);
}
}
это - предыдущие данные моего текстового файла.
1
2
3
4
checkpoint1
a
b
c
d
Выход:
{1 = [а], 2 = [Ь], 3 = [с], 4 = [d]}
и теперь это мои данные моего текстового файла.
1
2
3
4
checkpoint1
a
b
c
d
checkpoint2
5
6
7
8
checkpoint3
e
f
g
h
Ожидаемые результаты:
{1 = [а], 2 = [Ь], 3 = [с], 4 = [d], 5 = [е, е , g, h], 6 = [e, f, g, h], 7 = [e, f, g, h], 8 = [e, f, g, h]}
Что я хочу сделать, поставить 5,6,7,8 в ключ из hashmap, как 1,2,3,4. Но теперь значение все равно. Я хочу поставить e, f, g, h в один arraylist (nextValue - ArrayList) и поставить его на значение 5,6,7,8
что именно вы пытаетесь сделать? –
Никогда не делай ничего такого сложного, что ты сам заблудишься! –
Если итератор читает строку, содержащую контрольную точку2, то 5-6-7-8 будет храниться в ключе хэш-карты. тогда, когда итератор читает строку и содержит контрольную точку3, тогда e, f, g, h будут сохранены в arraylist и станут величиной 5-6-7-8. Я также думаю, что если я доберусь до контрольной точки2, возможно, сначала нужно прочитать e, f, g, h, а затем сохранить ее на arraylist, а затем, если контрольная точка дойдет3, тогда она будет хранить 5,6,7,8, а затем включить значение которого является arraylist – tuturyokgaming