Вы должны быть в состоянии помочь себе, используя некоторые структуры данных, которые более точно отражают ваши данные. Если у вас есть точечные данные, рассмотрите возможность использования Pair
, тогда ваши List
точек - это действительно так!
Далее, все Map
структуры в Java
будут вычислять свои собственные значения хеш-функции, вам не нужно этого делать! Вам нужно будет рассчитать нужные ключи, хотя. Из вашего фрагмента не ясно, зачем вообще нужен Hashtable/Map
- это локальная переменная, которая никогда не читается и будет собирать мусор сразу после выполнения метода. Таким образом, я догадался, что вы хотели вернуть это. Если это так, вы можете сделать:
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.collect.Lists;
public class TwoDimArray {
public static Integer keyCalculator(Pair<Integer, Integer> point) {
return point.getLeft() * point.getRight();
}
public static Map<Integer, Integer> myMethod(List<Pair<Integer, Integer>> points) {
return points.stream()
.collect(Collectors.toMap(p -> keyCalculator(p), p -> p.getRight()));
}
public static void main(String[] args) {
Pair<Integer, Integer> pointA = Pair.of(1, 2);
Pair<Integer, Integer> pointB = Pair.of(3, 4);
Pair<Integer, Integer> pointC = Pair.of(5, 6);
List<Pair<Integer, Integer>> points = Lists.newArrayList(pointA, pointB, pointC);
System.out.println("Points map: " + myMethod(points));
}
}
Какие выходы:
Points map: {2=2, 12=4, 30=6}