Сравните значения объектов, которые появляются в двух списках, и увеличьте, если они не различаются - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть Map типа <String, List<Object>>, который содержит имена и координаты (Double = X,Y).Эти значения используются для создания графиков.Проблема, с которой я столкнулся, заключается в том, что некоторые точки имеют одинаковые координаты и, следовательно, они едва различимы, поскольку они появляются одна над другой.Чтобы решить эту проблему, я подумал о том, чтобы искать в Списке с помощью двойного цикла и увеличивать на 0,01 только точки X, если X и Y появляются в List более одного раза.

Пример вывода:

Point1   [[0.1,0.1,0.1,0.1,0.1,0.1],[0.2,0.3,0.4,0.5,0.6,0.7]]
Point2   [[0.1,0.1,0.1,0.1]        ,[0.4,0.5,0.6,0.7]]                    
Point3   [[0.1,0.1]                ,[0.6,0.7]]

В этом случае Point1(0.1,0.4) и Point2(0.1,0.4) появятся друг над другом.Что я хочу сделать, так это увеличить Point1(0.1+0.01,0.4), чтобы оба были видны.

Мой код:

double i=0.01;

for (Map.Entry<String, Set<Coordinates>> serie : nameToCoordinates.entrySet()) {
    List<Double> xData = new ArrayList<>();
    List<Double> yData = new ArrayList<>();

    for (Coordinates coord : serie.getValue()) {


        for (Map.Entry<String, Set<Coordinates>> serie2 : nameToCoordinates.entrySet()) {
             for (Coordinates coord2 : serie.getValue()) {
                 if (!serie.getKey().equals(serie2.getKey())) {
                      if (coord.getX()==coord2.getX() && coord.getY()==coord2.getY()) {
                        xData.add(coord.getX()+i);
                        yData.add(coord.getY());
                      }
                  }
                  else {
                    xData.add(coord.getX());
                    yData.add(coord.getY());
                  }
              }

         }

     }

     i=i+0.01;

     chart.addSeries(serie.getKey(), xData, yData);

}

Этот трюк исправил некоторые точки, и теперь больше их видно,Но не все из них.Любые идеи о том, как я могу сделать это более эффективно и как избежать увеличения точек на вершине других?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...