У меня есть list
объектов, которые содержат coordinates
и name
. Пример распечатанного списка можно увидеть ниже:
[X=0.1, Y=0.1, name=Series1]
[X=0.1, Y=0.2, name=Series1]
[X=0.1, Y=0.3, name=Series1]
[X=0.1, Y=0.4, name=Series2]
[X=0.1, Y=0.5, name=Series2]
Я пытаюсь сгруппировать их на основе name
, что можно сделать с помощью следующей операции Java 8:
Map<String, List<Coordinates>> newList = coordinateList.stream()
.collect(Collectors.groupingBy(Coordinates::getName));
Выход:
Series1=[[X=0.1, Y=0.1],[X=0.1, Y=0.2],[X=0.1, Y=0.3]]
Series2=[[X=0.1, Y=0.4],[X=0.1, Y=0.5]]
Последний шаг, которого я пока не смог выполнить, - это итерация по Map
, создание списков X's
и Y's
, чтобы я наконец смог создать график (chart.addSeries(name, xData, yData);)
.
Мой подход к этому был следующим:
List<Double> xData = new LinkedList<Double>();
List<Double> yData = new LinkedList<Double>();
newList.forEach((k, v) -> {
//TO-DO
});
Внутри loop
Я бы хотел присвоить X's
и Y's
соответствующим lists
, но пока безуспешно.
Одна из проблем заключается в том, что X
и Y
связаны с объектом Coordinates
, поэтому я не могу просто добавить их к list
, который имеет тип Double
. Другая проблема, с которой я столкнулся, заключается в том, что я не могу получить X
и Y
отдельно от list
. Я пробовал getX()
и getY()
, но безуспешно.
Пример того, что я хотел бы, чтобы списки содержали:
Для key
Series1
сгенерированное lists
будет следующим:
xData=[0.1,0.1,0.1]
yData=[0.1,0.2,0.3]
Для следующей клавиши Series 2:
xData=[0.1,0.1]
yData=[0.4,0.5]