У меня есть список Objects
с именем Coordinates
, и каждая координата содержит три значения.Два типа double
x, y и одно String
имя.Мой код получает в качестве входных данных координаты и группирует их по имени, создавая Map
типа <String, List<Object>>
.Таким образом, вместо того чтобы иметь пары координат, связанные с именем, у меня есть имя, которое ассоциируется со всеми соответствующими координатами.
EG:
Перед картой:
[0.01,0.51] --> A
[0.01,0.56] --> A
[0.01,0.61] --> A
[0.01,0.66] --> AB
[0.01,0.71] --> ABC
[0.01,0.76] --> ABC
где A, B и C - имена.Если несколько имен появляются вместе, это означает, что они имеют одинаковые координаты.
После карты:
[[0.01,0.01,0.01],[0.51,0.56,0.61]] --> A
[[0.01,0.01], [0.61,0.66]] --> AB
[[0.01, 0.01], [0.71,0.76]] --> ABC
Чего я хотел бы добиться, так это отделить каждое имя от группы и связать все координатык этому имени.
Например, что я пытаюсь достичь:
[[0.01,0.01,0.01,0.01,0.01,0.01],[0.51,0.56,0.61,0.66,0.71,0.76]] --> A
[[0.01,0.01,0.01,0.01], [0.61,0.66,0.71,0.76]] --> B
[[0.01,0.01], [0.71,0.76]] --> C
Код, который создает Map
и группирует их по имени, следующий:
Map<String, List<Coordinates>> newList = coordinateList.stream()
.collect(Collectors.groupingBy(Coordinates::getName));
Есть ли способ добиться этого?Обратите внимание, что имена, например ABC, не разделены запятыми или пробелами, но если это поможет с возможным решением, я уже знаю, как это сделать (A, B, C).
Класс координат:
public class Coordinates {
private double X;
private double Y;
private String name;
public Coordinates(double dexp, double dent, String name) {
this.X=dexp;
this.Y=dent;
this.name=name;
}
@Override
public String toString() {
return "["+X+","+Y+"]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getX() {
return X;
}
public void setX(double x) {
X = x;
}
public double getY() {
return Y;
}
public void setY(double y) {
Y = y;
}
}
Пример имен:
STEP(One)
STEP(Two)
STEP(One)STEP(Two)