Дано:
У меня есть List<List<Integer>> locations
, который является координатами местоположения. Например, место A: (2,4), место B: (5,4), место C: (10,9), место D: (2,4). Так что мой locations
будет содержать список списков. Я не могу изменить этот формат.
Стоимость перехода в определенное место - это квадратный корень из суммы координат. Таким образом, перейти к стоимости составляет Place A = Math.sqrt(2 + 4)
, стоимость перейти к Place B = Math.sqrt(5 + 4)
и т. Д.
Вывод : я пытаюсь получить список наименее «затратных» из всех мест. Требование возврата List<List<Integer>> nearestLocations
. Я пытался создать TreeMap<Double, List<List<Integer>>
Вопрос Мой вопрос: как мне преобразовать приведенное ниже преобразование с использованием потоков Java 8?
List<List<Integer>> findNearestLocation(int total, List<List<Integer>> allLocations, int size) {
ArrayList<List<Integer>> results = new ArrayList<>();
TreeMap<Double, List<Integer>> map = new TreeMap<>();
for (int i = 0; i < total && i < allLocations.size(); i++) {
List<Integer> list = allLocations.get(i);
double l = 0.0;
for (Integer x : list) {
l += x * x;
}
map.put(Math.sqrt(l), list);
}
if (map.size() > 0) {
for (int get = 0; get < size; get++) {
results.add(map.get(map.firstKey()));
map.remove(map.firstKey());
}
}
return results;
}