// purchase product and return relevant product recommendations public List<Product> purchase(Customer customer, Product product) { purchasesCache.put(customer.id, product.id); ProductAssociativityGraph graph = productAssociativityGraphMap.get(product.category); Vertex v = Vertex.create(product.id); List<Vertex> associations = graph.getProductAssociations(v); int recommendSize = Math.min(associations.size(), maxNumRecommendations); return associations .stream() .map(vertex -> productCache.get(vertex.productId)) .limit(recommendSize) .collect(Collectors.toList()); }