У меня есть карта списков с ключом = GROUP и значением = списком номеров, хранящихся в виде строк.
Один элемент ниже
GROUP1/[3.0, 4.0, 2.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, -2.0, -2.0, -2.0, 2.0]
Что мне нужно сделать, это отменить (удалить) все отрицательные числа против положительных, но уменьшить числа + ve на это значение.
В вышеприведенном примере 3 отменяется против -2 (первый-пятый), оставляя +1 как промежуточный итог
Тогда +1 (общее от предыдущего) отменит -2 (следующий -ve), оставив -1 в качестве промежуточного итога
-1 должен возводиться в квадрат против 4 (следующий + ve в списке), оставляя 3 как промежуточный итог
Затем 3 квадрата против -2 (следующий-ве), оставляя в общей сложности 1.
Таким образом, все -ve исключены из Списка, равно как и 3.0, 4.0, но первый элемент теперь равен 1.0 (1.0 является последним промежуточным итогом)
Конечная последовательность:
[1.0, 2.0, 3.0, 3.0, 2.0, 2.0, 2.0, 2.0, 2.0]
Код, который у меня есть, просто суммирует список, как показано ниже.
Map<String, List<String>> m = new HashMap<String, List<String>>();
...
for (Entry<String, List<String>> entry : m.entrySet())
{
System.out.println(entry.getKey() + "/" + entry.getValue());
double calc = 0;
for (String element:entry.getValue()){
//System.out.println(element);
calc = calc + new Double(element).doubleValue();
}
//if (calc > 0.0)
System.out.println("Total for Item: " + entry.getKey() + " is "+calc);
}
Итого за товар: GROUP1 составляет 19,0
Я знаю, что мы не должны удалять элементы из списка во время итерации, поэтому вопрос
A) Идеальная логика для удаления чисел в указанной выше последовательности.
B) Должен ли я создать новый список и добавить в него элементы во время итерации?
C) Должен ли я изменить коллекцию, которую я храню, с Map of Lists на какую-то структуру классов?