Нечетное написание файлов после первой итерации всего ArrayList - PullRequest
0 голосов
/ 09 мая 2018

Еще один вопрос от меня. После обхода списка ArrayList один раз и правильного заполнения другого цикл my for продолжается и странным образом заполняет другой список. Я не могу понять почему. Пожалуйста, кто-нибудь может дать мне быстрый ответ?

public SearchResult getNearby(ClientDescriptor clientDescriptor) {
    final int R = 6371; //Earth's radius
    List<HotelDescriptor> hotelsforit = new ArrayList<>();
    Result tempRes = new Result(clientDescriptor,hotelsforit);
    for (HotelDescriptor i : hotelData) {
        double n = i.getCoordinates().getLatitude();
        double dist1 = clientDescriptor.getCoordinates().getLatitude() - i.getCoordinates().getLatitude();
        double dist2 = clientDescriptor.getCoordinates().getLongitude() - i.getCoordinates().getLongitude();
        double latDist = toRad(dist1);
        double lonDist = toRad(dist2);
        double a = Math.sin(latDist / 2) * Math.sin(latDist / 2) +
                Math.cos(toRad(i.getCoordinates().getLatitude())) * Math.cos(toRad(clientDescriptor.getCoordinates().getLatitude())) *
                        Math.sin(lonDist / 2) * Math.sin(lonDist / 2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        double distance = R * c;
        double radius = clientDescriptor.getRadius();
        System.out.println("The distance between " + clientDescriptor.getName() + " and " + i.getName() + " is " + distance + " kilometers");
        System.out.println();
        if (distance < radius)
            tempRes.hotels.add(i);
    }
    return  tempRes;
}

Ввод:

Hampton by Hilton; Bulevardul 21 Decembrie 1989 67, Cluj-Napoca 400124; 46,775113; 23,601878; 2; 350; 1; 400; 1; 650

Grand Hotel Italia; Strada Trifoiului 2, Клуж-Напока 400478; 46,752879; 23.605848; 2; 360; 1; 420; 1; 700

Бейфин; Piata Avram Iancu 3, Cluj-Napoca 400098; 46,771342; 23,596176; 4; 300; 8; 370; 0; 600

Hotel Opera Plaza; Strada General Traian Mosoiu 10-12, Клуж-Напока 400132; 46.768870; 23.600571; 4; 450; 8; 520; 2; 800

Гранд Отель Напока; Страда Октавиан Гога 1, Клуж-Напока 400698; 46,771694; 23,576061; 5; 450; 7; 450; 3; 800;

Hotel Confort; Calea Turzii 48, Клуж-Напока 400193; 46,763728; 23,597908; 6; 200; 7; 200; 1; 350

Hotel Paradis; Strada Ciocarliei, Клуж-Напока 400124; 46,779862; 23,611739; 7; 200; 8; 250; 1; 400

Отель Санни Хилл; Страда Фагетулуи 31А, Клуж-Напока 400497; 46,716030; 23,573740; 4; 150; 6; 190

Golden Tulip Ana Dome; Strada Observatorului 129, Клуж-Напока 400352; 46,751989; 23,576580; 0; 330; 0; 350; 0; 600

И нечетный вывод после записи в .csv:

Hampton by Hilton, одноместный номер 2350,0, двухместный номер 1400,0, люкс 1 650,0, Beyfin, Одиночный, 4,300.0, распашные, 8,370.0, Люкс, 0,600.0, Hotel Opera Plaza, Одноместный, 4 450,0, Двухместный, 8 520,0, Люкс, 2 800,0, Hotel Paradis, Одноместный, 7 200,0, Двухместный, 8 250,0, Люкс, 1 400,0, Hampton by Hilton, одноместный номер 2350,0, двухместный номер 1400,0, люкс 1650,0, Beyfin, Одиночный, 4,300.0, распашные, 8,370.0, Люкс, 0,600.0, Hotel Opera Plaza, Одноместный, 4 450,0, Двухместный, 8 520,0, Люкс, 2 800,0, Hotel Confort, Одноместный, 6 200,0, Двухместный, 7 200,0, Люкс, 1 350,0, Hotel Paradis, Одноместный, 7 200,0, Двухместный, 8 250,0, Люкс, 1 400,0, Grand Hotel Italia, одноместный номер 2360,0, двухместный номер 1420,0, люкс 1700,0, Hotel Confort, Одноместный, 6 200,0, Двухместный, 7 200,0, Люкс, 1 350,0, Grand Hotel Italia, одноместный номер 2360,0, двухместный номер 1420,0, люкс 1700,0, Beyfin, Одиночный, 4,300.0, распашные, 8,370.0, Люкс, 0,600.0, Hotel Opera Plaza, Одноместный, 4 450,0, Двухместный, 8 520,0, Люкс, 2 800,0, Hotel Confort, Одноместный, 6 200,0, Двухместный, 7 200,0, Люкс, 1 350,0, Golden Tulip Ana Dome, одноместный, 0,330,0, двухместный, 0,350,0, люкс, 0,600,0, Hampton by Hilton, одноместный номер 2350,0, двухместный номер 1400,0, люкс 1650,0, Grand Hotel Italia, одноместный номер 2360,0, двухместный номер 1420,0, люкс 1700,0, Beyfin, Одиночный, 4,300.0, распашные, 8,370.0, Люкс, 0,600.0, Hotel Opera Plaza, Одноместный, 4 450,0, Двухместный, 8 520,0, Люкс, 2 800,0, Grand Hotel Napoca, Одноместный, 5 450,0, Двухместный, 7 450,0, Люкс, 3 800,0, Hotel Confort, Одноместный, 6 200,0, Двухместный, 7 200,0, Люкс, 1 350,0, Hotel Paradis, Одноместный, 7 200,0, Двухместный, 8 250,0, Люкс, 1 400,0, Golden Tulip Ana Dome, одноместный, 0,330,0, двухместный, 0,350,0, люкс, 0,600,0,

Это для клиента, который ищет отели в радиусе 1 км. Как видите, первые 4 строки полностью верны, тогда добавление в список сходит с ума.

Расстояния:

Расстояние между Хэмптоном и Хэмптоном составляет 0,3174609238931157 километров

Расстояние между - и Grand Hotel Italia - 2,557986251311183 километров.

.

Расстояние между - и Бейфином составляет 0,9022687388120708 километров

Расстояние между отелем Opera Plaza составляет 0,8944861012510631 км

Расстояние между - и Гранд Отелем Napoca составляет 2,316705705166163 километров

Расстояние между отелем и отелем Confort составляет 1,4985385967615898 километров.

Расстояние между - и отелем Paradis составляет 0,6178315047415021 км

Расстояние между Аналой и Золотым тюльпаном - 3.4824383011487625 километров

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