Я новичок в Java, и я делаю Follow json, используя один массив с for для l oop и оператор if. Я хочу использовать dynamici c forl oop. Но я Я застрял с моей для l oop logi c part.
Вот моя java программа.
main. java
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class SingleListForLoop {
public static void main(String args[]) throws JsonProcessingException {
List < Map < Object, Object >> dataProviderList = new LinkedList < > ();
List < Object > yearList = new LinkedList < > ();
yearList.add(2009);
yearList.add(2010);
yearList.add(2011);
yearList.add(2012);
yearList.add(2013);
yearList.add(2014);
yearList.add(21.4);
yearList.add(31.3);
yearList.add(15.6);
yearList.add(34.8);
yearList.add(20.1);
yearList.add(27.3);
yearList.add(20.3);
yearList.add(43.1);
yearList.add(19.8);
yearList.add(34.7);
yearList.add(24.4);
yearList.add(21.9);
for (int i = 0; i < (yearList.size() - (i + 6)); i++) {
Map < Object, Object > dataProviderValueMap = new LinkedHashMap < > ();
dataProviderValueMap.put("year", yearList.get(i));
for (int j = i + 6; j <= (yearList.size() + (i - 12)); j++) {
dataProviderValueMap.put("income", yearList.get(j));
for (int k = 0; k <= (yearList.size() + (i - 6)); k++) {
dataProviderValueMap.put("expenses", yearList.get(k));
// for year 2014
if (k == (yearList.size() - 1)) {
dataProviderValueMap.put("dashLengthLine", 0);
dataProviderValueMap.put("dashLengthColumn", 5);
dataProviderValueMap.put("alpha", 0.5);
dataProviderValueMap.put("additional", "(projection)");
}
// for year 2013
if (k == (yearList.size() - 2)) {
dataProviderValueMap.put("dashLengthLine", 5);
}
}
}
dataProviderList.add(dataProviderValueMap);
}
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
String mapToJson = objectMapper.writeValueAsString(dataProviderList);
System.out.println(mapToJson);
}
}
Я хочу следующий вывод:
требуемый вывод:
[ {
"year" : 2009,
"income" : 21.4,
"expenses" : 20.3
}, {
"year" : 2010,
"income" : 31.3,
"expenses" : 43.1
}, {
"year" : 2011,
"income" : 15.6,
"expenses" : 19.8
}, {
"year" : 2012,
"income" : 34.8,
"expenses" : 34.7
}, {
"year" : 2013,
"income" : 20.1,
"expenses" : 24.4,
"dashLengthLine" : 5
}, {
"year" : 2014,
"income" : 27.3,
"expenses" : 21.9,
"dashLengthLine" : 0,
"dashLengthColumn" : 5,
"alpha" : 0.5,
"additional" : "(projection)"
} ]
Как я могу сделать этот l oop более конкретным и улучшенным для l oop? я хочу использовать только один массив и для l oop с оператором if, имеющим Map внутри для l oop. спасибо за помощь!