public List<Pair<Integer, Integer>> find(int[] numbers, int value) {
    validateInput(numbers);
    List<Pair<Integer, Integer>> sums = new LinkedList<Pair<Integer, Integer>>();
    for (int i = 0; i < numbers.length; i++) {
      for (int j = 0; j < numbers.length; j++) {
        if (numbers[i] + numbers[j] == value) {
          sums.add(new Pair(numbers[i], numbers[j]));
        }
      }
    }
    return sums;
  }
Iterative solution to this problem. Based on find the number that matches with a given number
in the array, the complexity order of this algorithm is O(N^2) in time terms and O(N) in space
terms.
src/main/java/com/github/pedrovgs/problem28/FindSums.java